golang中的随机数问题

Özg*_*çın 5 random go

这是我正在使用的代码:

package main
import "fmt"
import "math/rand"

func main() {
    code := rand.Intn(900000)
    fmt.Println(code)
}
Run Code Online (Sandbox Code Playgroud)

它总是回归698081.我不明白,有什么问题?

https://play.golang.org/p/XisNbqCZls

编辑:

我试过了 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)
}
Run Code Online (Sandbox Code Playgroud)

没有变化.现在它总是回归452000

https://play.golang.org/p/E_Wfm5tOdH

https://play.golang.org/p/aVWIN1Eb84

Leo*_*rea 14

您在操场上看到相同结果的几个原因

  1. Golang游乐场将缓存结果
  2. 操场上的时间总是在同一时间开始,以使操场确定性.

最后但并非最不重要的是,rand包默认种子1将使结果具有确定性.如果你放置一个,rand.Seed(time.Now().UnixNano())你会在每次执行时收到不同的结果.请注意,由于上述第二个原因,这不适用于操场.