东林博客

Go Rand随机的值每次运行不会变

Go的rand如果只有rand.Intn的话,每次运行期间,产生的随机数是变化的,但由于运行环境不变,会使第一次和第二次,以及以后每次运行产生的随机数永远相同。

我们来随机生成十组数:

可以看到build结果,随机产生了十组不同的正整数。但当我们再次运行,产生的结果也是和这次是相同的。无论再次build多少次。解决这个问题,需要使用到rand.Seed提供种子数,Seed的参数要变化,此处使用获取系统时间。

rand.Seed(time.Now().UnixNano())

我们把注释去掉,这样每次build都会产生不同的值了。

{{tip}}