go语言开发基础7 - 之go语言里的随机数生成包->math/rand
go语言里封装好了生成随机数的包:“math/rand”
math/rand包的相关文档:https://go-zh.org/pkg/math/rand/
一、math/rand包的主要方法
1.1、设置种子
rand.Seed(time.Now().UnixNano()) //设置随机种子,不设置则默认Seed(1)
1.2、返回非负数的随机int值
rand.Int() //返回一个非负的伪随机int值
1.3、返回一个int32类型的非负的31位伪随机数
rand.Int31() //返回一个int32类型的非负的31位伪随机数
1.4、返回一个int64类型的非负的63位伪随机数
rand.Int63() //返回一个int64类型的非负的63位伪随机数
1.5、返回一个取值范围在[0,n)的伪随机int值,如果n<=0会panic
rand.Intn(n int) //返回一个取值范围在[0,n)的伪随机int值,如果n<=0会panic
1.6、返回一个取值范围在[0,n)的伪随机int32值,如果n<=0会panic
rand.Int31n(n int32) //返回一个取值范围在[0,n)的伪随机int32值,如果n<=0会panic
1.7、返回一个取值范围在[0, n)的伪随机int64值,如果n<=0会panic
rand.Int63n(n int64) //返回一个取值范围在[0, n)的伪随机int64值,如果n<=0会panic
1.8、返回一个取值范围在[0.0, 1.0)的伪随机float32值
rand.Float32() //返回一个取值范围在[0.0, 1.0)的伪随机float32值
1.9、返回一个取值范围在[0.0, 1.0)的伪随机float64值
rand.Float64() //返回一个取值范围在[0.0, 1.0)的伪随机float64值
1.10、返回一个有n个元素的,[0,n)范围内整数的伪随机排列的切片
rand.Perm(n int) []int //返回一个有n个元素的,(0,n)范围内整数的伪随机排列的切片
二、示例
package main
import (
"fmt"
"math/rand"
"time"
)
func main() {
// 不设置种子,每次随机的结果都一样
fmt.Println(rand.Intn(8)) // 结果:1
fmt.Println(rand.Float64()) // 结果:0.9405090880450124
// 利用time包设置随机种子
rand.Seed(time.Now().UnixNano())
fmt.Println(rand.Intn(10)) // 结果:5(每次运行结果不一样)
fmt.Println(rand.Float64()) // 结果:0.04916491308730342(每次运行结果不一样)
fmt.Println(rand.Perm(5)) // 结果:[2 1 3 4 0](每次运行得到切片的顺序不一样)
}

浙公网安备 33010602011771号