在 Go 中生成固定长度随机数的最快、最简单的方法是什么?
假设要生成8位长数字,问题是rand.Intn(100000000)
是结果可能远小于 8 位数字,并且用前导零填充它对我来说看起来不是一个好的答案。
也就是说,我更关心随机性的质量,因为它的长度。所以我在想,对于这个具体问题,以下是最快、最简单的方法吗?
99999999 - rand.Int63n(90000000)
即,我猜Int63n
可能比我的情况更好Intn
。这是真的,还是只是一厢情愿?关于全8位的随机性,两者会相同,还是真的有一个比另一个更好?
最后,还有比上面更好的方法吗?
UPDATE:
请不要提供low + rand(hi-low)
作为答案,众所周知。这相当于我现在正在做的事情,但它并没有回答我真正的问题,“关于全8位的随机性,两者会相同,还是真的有一个比另一个更好?”
如果没有人能回答这个问题,我将在两者之间绘制一个二维散点图,然后自己找出答案......
Thanks
这是一个通用函数,用于生成一定范围内的数字
func rangeIn(low, hi int) int {
return low + rand.Intn(hi-low)
}
See it on the Playground http://play.golang.org/p/HEG_UToBAB
在您的具体情况下,尝试生成 8 位数字,范围将是(10000000, 99999999)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)