以整数为例,golang的随机数生成用的是math包里的rand包的Intn(n int)函数
,传入一个整数便可得到一个随机的从 [0,n) 的结果。
在这里插入图片描述
但,随机数的生成经常伴随着“种子”之类的说法,其实这要看自己的需求来决定是用还是不用。

就像上面的图片展示的一样,其实可以不用也能生成随机数,但是看图中右侧控制台的输出,其实我运行了两遍,发现两次的结果是一样,这就成为了人们俗称的 “伪随机数”

若想每次得到的结果都不一样,那么就需要设置好种子。关于”种子“这名字的起源与来龙去脉,我没有过多了解。

种子的设置仍然在rand包中,使用seed函数即可。用法如下图所示
在这里插入图片描述

可以清楚地看到,每次运行结果和上次的都不一样。这就实现了真正意义上的随机数生成,其中种子值的设置,用到了纳秒时间戳,也可以只传入时间戳,这个数字每一纳秒或者秒 都在变化,呈现出不确定性,所以种子也会变化,最后生成的值也会变化。

辟谣:不用种子并不是像某些文章或者网上的回答所说的那样,每次都生成0,只是会生成伪随机数而已。