猿问

如何在 Go 中生成固定长度的随机数?

在 Go 中生成固定长度随机数的最快和最简单的方法是什么?

说要生成 8 位长数字,问题rand.Intn(100000000)在于结果可能远小于 8 位,并且用前导零填充它对我来说似乎不是一个好的答案。

即,我更关心随机性的质量在其长度的意义上。所以我在想,对于这个特定的问题,以下是最快和最简单的方法吗?

99999999 - rand.Int63n(90000000)

即,我想Int63n可能比Intn. 是真的,还是只是一厢情愿?关于全8位数的随机性,两者是否相同,还是真的有一个比另一个更好?

最后,还有比上面更好的方法吗?

更新:

请不要提供low + rand(hi-low)答案,因为每个人都知道。这相当于我现在正在做的事情,它没有回答我真正的问题,“关于完整的 8 位数字的随机性,这两个是一样的,还是真的有一个比另一个更好?”

如果没有人能回答,我会在两者之间绘制一个二维散点图并找出自己......


慕村9548890
浏览 428回答 2
2回答

青春有我

这是用于生成范围内数字的通用函数func rangeIn(low, hi int) int {    return low + rand.Intn(hi-low)}在上看到它 Playground在您的特定情况下,尝试生成 8 位数字,范围将是 (10000000, 99999999)

慕尼黑5688855

这取决于您要使用的值范围。如果您允许值范围 [0-99999999] 并填充零字符的 ip 号 < 8,则使用 fmt like&nbsp;fmt.Sprintf("%08d",rand.Intn(100000000))。如果你不想要填充,哪个值在 [10000000, 99999999] 范围内,然后给它一个像ranNumber := 10000000+ rand.Intn(90000000)`这样的基数
随时随地看视频慕课网APP

相关分类

Go
我要回答