为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
慕村9548890 2021-12-20 19:18:55
在 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)


查看完整回答
反对 回复 2021-12-20
?
慕尼黑5688855

TA贡献1848条经验 获得超2个赞

这取决于您要使用的值范围。

  1. 如果您允许值范围 [0-99999999] 并填充零字符的 ip 号 < 8,则使用 fmt like fmt.Sprintf("%08d",rand.Intn(100000000))

  2. 如果你不想要填充,哪个值在 [10000000, 99999999] 范围内,然后给它一个像ranNumber := 10000000+ rand.Intn(90000000)`这样的基数


查看完整回答
反对 回复 2021-12-20
  • 2 回答
  • 0 关注
  • 426 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信