[英]Go rand.Intn same number/value
2个原因:
你必须initalize全球Source
的使用rand.Intn()
和其他功能rand
使用包rand.Seed()
例如:
rand.Seed(time.Now().UnixNano())
查看使用 Go Rand 包的Difficulty 的可能重复项。
引用rand
包文档:
诸如 Float64 和 Int 之类的顶级函数使用默认的共享源,该源在每次程序运行时生成确定性的值序列。 如果每次运行需要不同的行为,请使用 Seed 函数来初始化默认 Source。
Tour在缓存其输出的Go Playground上运行示例。
请参阅为什么 count++(而不是 count = count + 1)会改变 Golang 中返回地图的方式中的详细信息。
要使 rand 包中的函数正常工作,您必须设置一个“种子”值。 这必须是用户决定的一个很好的随机值,因为 - 根据https://golang.org/pkg/math/rand/#Rand.Seed这是 golang 用来首先将系统设置为确定性状态的值然后根据该值生成一个数字。
要使示例代码正常工作,您可以尝试
func main() {
rand.Seed(time.Now().UnixNano())
fmt.Println("My favorite number is ", rand.Intn(10))
}
time.Now().UnixNano 可以给出任意(类似)的数字,因为该值以“千分之一秒”为单位
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.