在 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 语言中生成固定长度的随机数的主要内容,如果未能解决你的问题,请参考以下文章

在C语言中如何固定字符的长度

Dart生成固定长度随机数

在C语言中怎样产生随机的字符串

如何使用 JavaScript 生成一个固定长度的随机数?

js生成随机固定长度字符串的简便方法

如何从给定范围生成固定长度值的随机列表?