一尘不染

Go rand.Intn相同的数字/值

go

谁能告诉我为什么这里的Go示例:

https://tour.golang.org/basics/1

总是为rand.Intn(10)返回相同的值?


阅读 1549

收藏
2020-07-02

共1个答案

一尘不染

2个原因:

  1. 你必须initalize全球Source所使用rand.Intn()和其他功能的rand使用包rand.Seed()。例如:
    rand.Seed(time.Now().UnixNano())
    

使用Go Rand软件包查看Difficulty的可能重复项。 引用以下文件的doc rand

诸如Float64和Int之类的顶级函数使用默认的共享源 ,该在每次运行程序时都会生成确定的值序列。
如果每次运行需要不同的行为,请使用种子函数初始化默认的源。

  1. 巡回赛上运行的例子去游乐场,它可以缓存其输出。
    请参阅[为什么count ++(而不是count = count +1)更改Golang中返回地图的方式的详细信息)。
2020-07-02