在 Go 语言中生成固定长度的随机数
Posted
技术标签:
【中文标题】在 Go 语言中生成固定长度的随机数【英文标题】:Generating fixed length random number in Go lang 【发布时间】:2018-06-19 07:48:35 【问题描述】:我需要在 Golang 中生成一个唯一的随机数。我有一个简单的 ruby 代码:
(0...16).map rand(10).to_s .join
所以,实际上我需要生成一个长度为 16 的数字,其中每个数字都是从 [0-9] 中随机选取的。我不明白 random.Intn(n) 函数如何帮助我。知道我该怎么做吗?
【问题讨论】:
完全一样?生成 16 位数字并加入它们。提示(如果你真的需要一个数字而不是字符串):v = v * 10 + randomDigit
只生成一个介于 0 和 1*10^16-1 之间的随机数可能更有效(在 Go 和 Ruby 中)。
还有一个快速的通用解决方案(当您需要的不仅仅是数字和/或您需要比int64
更适合的时间),请参阅How to generate a random string of a fixed length in golang?
【参考方案1】:
一种方法是:
s := ""
for i := 0; i < 16; i++
s += (string)(rand.Intn(10) + 48)
48 是 0
的 ascii 值。
或者通过使用@Flimzy 更有效的建议:
s := fmt.Sprintf("%016d", rand.Int63n(1e16))
"%016d"
将帮助用零填充数字。
【讨论】:
你不想以某种形式随机播种吗? @Andrew 是的,你肯定需要seed。检查***.com/questions/12321133/…。以上是关于在 Go 语言中生成固定长度的随机数的主要内容,如果未能解决你的问题,请参考以下文章