Go math/rand包用於生成隨機數。
代碼:
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() }
返回結果:
81
0.9405090880450124
5,87
5,87
多次重復執行上述代碼,返回的結果仍然是一樣的。所以為了使得調用的隨機數不相同,就需要使用NewSource來提供一個隨機的種子。比如:
s2 := rand.NewSource(time.Now().Unix())
如果在同一次執行中多次調用,返回的結果是不一樣的:
比如這個代碼:
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