gpt4 book ai didi

go - Go Rand 包的难度

转载 作者:IT老高 更新时间:2023-10-28 13:08:05 25 4
gpt4 key购买 nike

是否有任何 Go 函数在每次运行时都返回真正的伪随机数?我的意思是,考虑下面的代码,

package main

import (
"fmt"
"rand"
)

func main() {
fmt.Println(rand.Int31n(100))
}

每次执行此代码时,我都会得到相同的输出。是否有一种方法会在每次调用时返回不同的随机结果?

最佳答案

包裹rand可用于生成伪随机数,这些伪随机数是根据特定的初始值(称为“种子”)生成的。

这个初始种子的一个流行选择是例如以纳秒为单位的当前时间 - 当您多次执行程序时,这个值可能会有所不同。您可以使用当前时间初始化随机生成器,如下所示:

rand.Seed(time.Now().UnixNano())

(不要忘记为此导入 time 包)

还有一个名为 crypto/rand 的包。可用于生成更好的随机值(此生成器还可能会考虑用户的鼠标移动、处理器的当前热量和许多其他因素)。但是,这个包中的功能要慢几倍,除非你不编写密码短语生成器(或其他与安全相关的东西),否则普通的 rand 包可能没问题。

关于go - Go Rand 包的难度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8288679/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com