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

xpt*_*xpt 1 random numbers go

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

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

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

99999999 - rand.Int63n(90000000)
Run Code Online (Sandbox Code Playgroud)

即,Int63n对于我的情况,我想可能比更好Intn。是真的,还是只是一厢情愿?关于完整的8位数字的随机性,两者是否相同,或者确实有一个比另一个更好?

最后,还有什么比以上更好的方法了?

更新:

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

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

谢谢

sbe*_*rry 8

这是用于生成范围内数字的通用功能

func rangeIn(low, hi int) int {
    return low + rand.Intn(hi-low)
}
Run Code Online (Sandbox Code Playgroud)

看到它 Playground

在您的特定情况下,尝试生成8位数字,范围为 (10000000, 99999999)