#include(包含rand、srand)
#include

函数一:int rand(void);

返回一个[0,RAND_MAX]间的随机整数。

函数二:void srand(unsigned seed);

参数seed是srand()的种子,用来初始化srand()的起始值。
如果在srand()里给参数seed指定了一个值(这里指定的值是当前时间),那么 rand()就会将seed的值作为产生伪随机数的初始值;
而如果用户在rand()前没有调用过srand(),那么系统默认将1作为伪随机数的初始值,如果初始值是此时的1或是其他定值,那么每次rand()产生的随机数序列都是一样的,这也就是所谓的“伪随机数”
值得注意的是,如果srand()括号中没有argument的话,程序是会报错的,因为在函数原型中,srand()函数是要求加上内容的。

注意:

  • rand()函数可以生成一个[0,RAND_MAX]间的随机整数;(ISO IEC 9899 2011 (C11)标准中未规定 RAND_MAX 的具体数值。但该标准规定了RAND_MAX 的值应至少为32767。编程的时候,不应该对 RAND_MAX 的具体数值做任何假设。)
  • srand()可以被认为是为rand()的“伪随机数”的结果指定一个固定的序列,若未引用srand()函数,则程序默认srand()括号中的值为1;如果引用的话,srand()括号中不能为空;
  • 为了确保生成的随机数为尽可能符合概率上的随机,需要调用一个函数time()(是指返回自 Unix 纪元(January 1 1970 00:00:00 GMT)起的当前时间的秒数的函数,主要用来获取当前的系统时间,返回的结果是一个time_t类型),这个函数包含在头文件time.h里,在生成随机数的调用下需强制类型转换为(unsigned)time(),后面一个括号中必须填入(unsigned)time(NULL)或(unsigned)time(0)。