在 Go 中生成固定长度随机数的最快和最简单的方法是什么?说要生成 8 位长数字,问题rand.Intn(100000000)在于结果可能远小于 8 位,并且用前导零填充它对我来说似乎不是一个好的答案。即,我更关心随机性的质量在其长度的意义上。所以我在想,对于这个特定的问题,以下是最快和最简单的方法吗?99999999 - rand.Int63n(90000000)即,我想Int63n可能比Intn. 是真的,还是只是一厢情愿?关于全8位数的随机性,两者是否相同,还是真的有一个比另一个更好?最后,还有比上面更好的方法吗?更新:请不要提供low + rand(hi-low)答案,因为每个人都知道。这相当于我现在正在做的事情,它没有回答我真正的问题,“关于完整的 8 位数字的随机性,这两个是一样的,还是真的有一个比另一个更好?”如果没有人能回答,我会在两者之间绘制一个二维散点图并找出自己......
2 回答
青春有我
TA贡献1784条经验 获得超8个赞
这是用于生成范围内数字的通用函数
func rangeIn(low, hi int) int {
return low + rand.Intn(hi-low)
}
在上看到它 Playground
在您的特定情况下,尝试生成 8 位数字,范围将是 (10000000, 99999999)
慕尼黑5688855
TA贡献1848条经验 获得超2个赞
这取决于您要使用的值范围。
如果您允许值范围 [0-99999999] 并填充零字符的 ip 号 < 8,则使用 fmt like
fmt.Sprintf("%08d",rand.Intn(100000000))
。如果你不想要填充,哪个值在 [10000000, 99999999] 范围内,然后给它一个像
ranNumber := 10000000
+ rand.Intn(90000000)`这样的基数
- 2 回答
- 0 关注
- 426 浏览
添加回答
举报
0/150
提交
取消