golang 随机数

benlightning · 2015-04-21 03:00:00 · 44704 次点击 · 预计阅读时间 1 分钟 · 大约8小时之前 开始浏览    
这是一个创建于 2015-04-21 03:00:00 的文章,其中的信息可能已经有所发展或是发生改变。

package main
import "fmt"
import "math/rand"
func main() {
//例如,rand.Intn 返回一个随机的整数 n,0 <= n <= 100。
    fmt.Print(rand.Intn(100), ",")
    fmt.Print(rand.Intn(100))
    fmt.Println()
//rand.Float64 返回一个64位浮点数 f,0.0 <= f <= 1.0。
    fmt.Println(rand.Float64())
//这个技巧可以用来生成其他范围的随机浮点数,例如5.0 <= f <= 10.0
    fmt.Print((rand.Float64()*5)+5, ",")
    fmt.Print((rand.Float64() * 5) + 5)
    fmt.Println()
//要让伪随机数生成器有确定性,可以给它一个明确的种子。
    s1 := rand.NewSource(42)
    r1 := rand.New(s1)
//调用上面返回的 rand.Source 的函数和调用 rand 包中函数是相同的。
    fmt.Print(r1.Intn(100), ",")
    fmt.Print(r1.Intn(100))
    fmt.Println()
如果使用相同的种子生成的随机数生成器,将会产生相同的随机数序列。
    s2 := rand.NewSource(42)
    r2 := rand.New(s2)
    fmt.Print(r2.Intn(100), ",")
    fmt.Print(r2.Intn(100))
    fmt.Println()
}
$ go run random-numbers.go 
81,87
0.6645600532184904
7.123187485356329,8.434115364335547
5,87
5,87

 


有疑问加站长微信联系(非本文作者)

本文来自:博客园

感谢作者:benlightning

查看原文:golang 随机数

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

44704 次点击  
加入收藏 微博
上一篇:golang 信号
下一篇:golang url解析
3 回复  |  直到 2019-05-21 17:50:59
ayanmw
ayanmw · #1 · 7年之前

缺少随机数初始化: import "time"

rand.Seed(time.Now().Unix())

;否则你每次的随机数都是固定的顺序;

eveforend
eveforend · #2 · 6年之前

兄弟,你的注释能不能认真写,明明是0<=n<100,让你写成小于等于100了,你这不误导人么,剩下的注释全有问题

wodouliyoutang
wodouliyoutang · #3 · 6年之前

误人子弟啊

添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传