在计算机中我们想要生成的随机数都是伪随机数。由一个随机种子来进行周期控制,每个随机种子代表了一个周期的伪随机数,一般一个周期伪65535。

我们可以使用rand()函数来生成随机数。如果用户没有设定随机种子时,系统默认的随机种子为1。每个周期中的随机数字时相同的,想要每个周期不同的话,可以用srand()函数进行初始化。

srand()函数可以对rand()函数进行初始化。可以利用srand((unsigned int)(time(NULL)))的方法,产生不同的随机种子,因为每一个运行程序的时间是不同。

总体的逻辑过程如下:

  1. 给srand()提供一个种子,它是一个unsigned int类型。
  2. 调用rand(),它会根据提供给srand()的种子值返回一个随机数(在0到RAND_MAX之间)。
  3. 根据需要多次调用rand(),从而不间断地得到新的随机数。
  4. 无论什么时候,都可以给srand()提供一个新的种子,从而进一步"随机化"rand()的输出结果。

产生一定范围随机数的通用表达公式如下所示:

  1. 要取得 [a,b) 的随机整数,使用 (rand() % (b-a))+ a。
  2. 要取得 [a,b] 的随机整数,使用 (rand() % (b-a+1))+ a。
  3. 要取得 (a,b] 的随机整数,使用 (rand() % (b-a))+ a + 1。
  4. 通用公式: a + rand() % n;其中的 a 是起始值,n 是整数的范围。
  5. 要取得 0~1 之间的浮点数,可以使用 rand() / double(RAND_MAX)。RAND_MAX 的范围最少是在 32767 之间(int)。用 unsigned int 双字节是 65535,四字节是 4294967295 的整数范围。

更多推荐

C/C++_随机数生成函数详解