Go语言生成随机数的方法(附带实例)
计算机科学的随机数都是根据一定的算法计算得出的。Go 语言的标准库 math/rand 提供了生成随机数的相关方法。
如果是没有种子的随机数 rand.Intn(10),那么每次生成的随机数不变。
如果为随机数生成器设置了不同的种子,将会得到不同的随机数序列。如果为随机数生成器设置了相同的种子,则每次都会产生相同的随机数序列,示例代码如下:
时间是不断变化的,若将时间作为随机数生成器的种子,那么每次生成的种子的数值会有所不同,进而也就会产生不同的随机数序列。示例代码如下:
在某些情况下,我们需要生成一个特定区间范围内的随机数。由于 rand.Intn(n) 生成的随机数为左闭右开的区间 [0,n) ,因此这里可以使用一个小技巧,即采用“+N”的方法来调整区间范围。例如,若想生成区间 [5,80] 的随机数,可采用如下示例代码:
如果是没有种子的随机数 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