c语言 - 获取随机数

c语言 - 获取随机数,实际上,计算机只能为我们提供伪随机数,所谓伪随机数就是按照一定算法模拟产生的,其结果是确定的,是可见的;
计算机产生随机数的过程,是根据一个种子为基准,以某个递推公式推算出来的一系列数,当递推的范围足够大、往复性足够强、又符合正态分布或平均分布时,我们就可以认为这是一个近似的真随机数

随机数

在 C 语言中,我们可以使用 stdlib.h 提供的 srand()、rand() 两个函数来生成随机数:

  • void srand(unsigned int seed)设置随机数种子,默认为 1。一个标准的做法是将time(0)作为种子。
  • int rand()生成一个随机数,返回值的范围为[0, RAND_MAX]。如果需要指定范围的随机数,可以利用%取余运算。

所谓种子可以看作随机数序列的名字,一个种子对应一串随机数序列,当种子不变时,就会按照随机数序列依次输出随机数。

设置种子

srand()函数用于设置种子,种子必须是一个unsigned int无符号整型数值。

可以发现,要想有随机效果,种子必须不同

套用两次运算,让随机序列之间的差异更明显

指定范围

获取指定范围[min, max)的伪随机数的最简单方式为:(rand() % (max - min)) + min。例子: