首页 > 编程笔记 > Go语言笔记 阅读:17

Go语言生成随机数的方法(附带实例)

计算机科学的随机数都是根据一定的算法计算得出的。Go 语言的标准库 math/rand 提供了生成随机数的相关方法。

如果是没有种子的随机数 rand.Intn(10),那么每次生成的随机数不变。

如果为随机数生成器设置了不同的种子,将会得到不同的随机数序列。如果为随机数生成器设置了相同的种子,则每次都会产生相同的随机数序列,示例代码如下:
var rn int64 = 99
rand.Seed(rn)
num:=rand.Intn(10) //每次得到的结果都一样

时间是不断变化的,若将时间作为随机数生成器的种子,那么每次生成的种子的数值会有所不同,进而也就会产生不同的随机数序列。示例代码如下:
//使用时间作为种子
rand.Seed(time.Now().UnixNano())
//生成随机数
num:=rand.Intn(10)

在某些情况下,我们需要生成一个特定区间范围内的随机数。由于 rand.Intn(n) 生成的随机数为左闭右开的区间 [0,n) ,因此这里可以使用一个小技巧,即采用“+N”的方法来调整区间范围。例如,若想生成区间 [5,80] 的随机数,可采用如下示例代码:
//生成区间[5,80]的随机数
rand.Seed(time.Now().UnixNano())
num:=rand.Intn(76)+5

相关文章