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 生成范围随机数

参考技术A

math/rand 中的所有整数函数都生成非负数.

示例 main.go

执行

同理,需要int64 int32类型的随机数只要修改随机函数
但是需要注意 math/rand 几个函数的取值区间!如Intn的范围[0, n)。[0,20),20会取不到

我自己的需求这样写已足够

以上是关于golang连续生成随机数的主要内容,如果未能解决你的问题,请参考以下文章

GO GOLANG 生成范围随机数

golang 生成随机数

golang学习记录:golang生成符合正态分布的随机数

golang学习记录:golang生成符合正态分布的随机数

golang学习记录:golang生成符合正态分布的随机数

Golang 生成随机数