这是我正在使用的代码:
package main
import "fmt"
import "math/rand"
func main() {
code := rand.Intn(900000)
fmt.Println(code)
}
它总是返回 698081
。我不明白,这是什么问题?
编辑:
我试过 rand.Seed
package main
import "fmt"
import "time"
import "math/rand"
func main() {
rand.Seed(time.Now().UnixNano())
code := rand.Intn(900000)
fmt.Println(code)
}
没有变化。现在它总是返回 452000
最佳答案
在 playground 中看到相同结果的几个原因
- Golang playground 会缓存结果
- playground 中的时间总是同时开始,以使 playground 具有确定性。
最后但同样重要的是,rand
包默认种子是 1
,这将使结果具有确定性。如果您放置一个 rand.Seed(time.Now().UnixNano())
,您将在每次执行时收到不同的结果。请注意,由于上述第二个原因,这在 Playground 上不起作用。
关于go - golang中的随机数问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45394684/