Go rand.Intn 返回相同的数字
在 Go 中,rand.Intn() 函数生成 0(含 0)之间的伪随机整数) 和 n(不包括)。但是,用户报告说,他们使用此函数的代码始终返回相同的值。为什么会发生这种情况?
这种行为有两个主要原因:
缺乏初始化:
rand 包维护一个其所有随机数生成器的全局源,包括 rand.Intn()。默认情况下,此 Source 未初始化,从而产生确定性的值序列。要解决此问题,请调用 rand.Seed() 使用随机值初始化 Source,该随机值通常从系统时钟获取:
rand.Seed(time.Now().UnixNano())
以上是为什么 Go 的 rand.Intn() 返回相同的数字?的详细内容。更多信息请关注PHP中文网其他相关文章!