Srand函数是随机数发生器的初始化函数。
原型:void srand(unsigned seed);
用法:它需要提供一个种子,这个种子会对应一个随机数,如果使用相同的种子后面的rand()函数会出现一样的随机数。如: srand(1); 直接使用1来初始化种子。而且电脑的随机数都是伪随机,也就是通过一定的算法得出一个数列,然后每 rand()一次就取一个数。而srand()的功能就是就是设置产生随机数的公式的参数(随机数种子),如果使用相同的种子,那么得到的随机数也就是相同的。自然,如果使用不同的种子,得出的随机数序列也是不同的。
那么怎么利用rand产生真正的“随机数”呢?通过srand(time(NULL))使得随机数种子随时间的变化而变化。但切记最好不要讲srand函数写在for循环的内部,因为可能导致每次循环时,srand函数中的种子变化不大(小于1s),导致出现同一随机数列。
PS:time函数可以获取当前的系统时间,返回的结果是一个time_t类型,其实就是一个大整数,其值表示从CUT(Coordinated Universal Time)时间1970年1月1日00:00:00(称为UNIX系统的Epoch时间)到当前时刻的秒数。