默认的rand生成的是伪随机数
rand.Intn () 函数是个伪随机函数,不管运行多少次都只会返回同样的随机数,因为它默认的资源就是单一值,所以必须调用 rand.Seed (), 并且传入一个变化的值作为参数,如 time.Now().UnixNano() , 就是可以生成时刻变化的值
package main
import (
"fmt"
"math/rand"
"time"
)
func init() {
// 初始化随机数的资源库,如果不执行这行,不管运行多少次都返回同样的值
rand.Seed(time.Now().UnixNano())
}
func main() {
for i := 0; i < 5; i++ {
a := rand.Int()
fmt.Println(a)
}
for i := 0; i < 5; i++ {
a := rand.Intn(100)
fmt.Println(a)
}
for i := 0; i < 5; i++ {
a := rand.Float32()
fmt.Println(a)
}
}
打印结果
3817069283199426285
2111713095416744938
615340828092195872
7616119022296434761
5786102922724563664
49
46
57
58
61
0.6485585
0.03871714
0.7891667
0.7109998
0.23099348