Go math/rand包用於生成隨機數。dom
代碼:spa
package main import "fmt" import "math/rand" func main() { fmt.Println(rand.Intn(100)) //產生0-100的隨機整數 fmt.Println(rand.Float64()) //產生0.0-1.0的隨機浮點點 s1 := rand.NewSource(42) //用指定值建立一個隨機數種子 r1 := rand.New(s1) fmt.Print(r1.Intn(100), ",") fmt.Print(r1.Intn(100)) fmt.Println() s2 := rand.NewSource(42) //同前面同樣的種子 r2 := rand.New(s2) fmt.Print(r2.Intn(100), ",") fmt.Print(r2.Intn(100)) fmt.Println() }
返回結果:code
81blog
0.9405090880450124class
5,87import
5,87隨機數
屢次重複執行上述代碼,返回的結果仍然是同樣的。因此爲了使得調用的隨機數不相同,就須要使用NewSource來提供一個隨機的種子。好比:im
s2 := rand.NewSource(time.Now().Unix())di
若是在同一次執行中屢次調用,返回的結果是不同的:co
好比這個代碼:
package main import "fmt" import "math/rand" func main() { fmt.Println(rand.Intn(100)) fmt.Println(rand.Intn(100)) fmt.Println(rand.Intn(100)) fmt.Println(rand.Intn(100)) }
go run random.go連續執行三次,顯示結果爲:
$ go run random.go
81
87
47
59
$ go run random.go
81
87
47
59
$ go run random.go
81
87
47
59