rand()
int rand(void),头文件stdlib.h
rand()返回一随机数值的范围在0至RAND_MAX (215-1=32767)间,0~RAND_MAX每个数字被选中的机率是相同的。
rand()的随机数都是由伪随机数,即是由小M多项式序列生成的,其中产生每个小序列都有一个初始值,即随机数种子。(注意: 小M多项式序列的周期是65535,即每次利用一个随机种子生成的随机数的周期是65535,当取得65535个随机数后它们又重复出现了。)当计算机正常开机后,这个种子的值是定了的,除非破坏了系统。
srand()
void srand(unsigned int seed),头文件:stdlib.h
srand()用来设置rand()产生随机数时的随机种子。如果每次seed都设相同值,rand()所产生的随机数值每次就会一样。
一般使用当前时钟作为随机数种子,srand((unsigned int)(time(NULL)),每一次运行程序的时间是不同的,所以每一次运行程序的随机种子就不同。
在一次程序里,rand()应该只被被播种一次,它不应该被反复播种。
三个实例
1.使用默认随机种子,无论运行这个程序多少次,打印的都是这些值。
2.使用当前时钟作为随机数种子,多次运行这个程序,每次打印的值都不一样。
3.多次播种,for循坏运行速度很快,每次播种取得时间几乎一样,所以取出来的随机数相同。
记住:只要是单次播种,当取得65535个随机数后,它们又会重复出现。