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](每次运行得到切片的顺序不一样)
}

  

posted @ 2020-04-21 18:23  欧-阳  阅读(659)  评论(0)    收藏  举报