golang连续生成随机数
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了golang连续生成随机数相关的知识,希望对你有一定的参考价值。
就是用for循环连续生成指定个数的随机数,怎么搞?
我现在是随机的全都一样,种子的放的是当前纳秒数,当时不行,有连续的是一样的,有什么办法,每次都不一样?
const NUM int = 100
for i := 0; i < NUM; i += 1
rand.Seed(int64(i))
fmt.Printf("%d\\t", rand.Int63n(int64(NUM)))
其实在循环里面这点时间间隔,纳秒也是跟不上的。
还有,你用sleep的方法肯定是不能接受的!!!
参考技术A 种子放循环里面!追问我是种子放在循环里面的,我生成随机数写成了一个函数
然后在另一个函数里面循环调用它生成的。
现在是不是生成的所有都一样,而是由连续的一段是一样的。
我猜是不是纳秒不够短,cpu运算太快了,导致的。
还有其他办法吗?
纳秒还不够。。。? 没有你说的问题啊 !
是不是你的随机的范围小 随机的次数又多呢 ?
//100 以内的随机数
for i := 0; i < 20; i++rand.Seed(time.Now().UnixNano())
randNum := uint32(rand.Int31n(100))
fmt.Println(randNum)
结果
73
56
73
87
19
96
96
75
94
99
55
37
22
71
18
62
50
98
44
74
追问rand.Seed(time.Now().UnixNano()); //以当前纳秒数作为随机数种子
r := rand.Int63()
我是这样写的,你看下!
我随机固定长度的数!
你的也可以的啊,呵呵。
GO GOLANG 生成范围随机数
参考技术Amath/rand 中的所有整数函数都生成非负数.
示例 main.go
执行
同理,需要int64 int32类型的随机数只要修改随机函数
但是需要注意 math/rand 几个函数的取值区间!如Intn的范围[0, n)。[0,20),20会取不到
我自己的需求这样写已足够
以上是关于golang连续生成随机数的主要内容,如果未能解决你的问题,请参考以下文章