关于rand()和srand()的理解

来源:互联网 发布:怎么在淘宝上挑选衣服 编辑:程序博客网 时间:2024/05/29 07:13

函数一:int rand(void);
从srand (seed)中指定的seed开始,返回一个[seed, RAND_MAX(0x7fff))间的随机整数。

函数二:void srand(unsigned seed); 
参数seed是rand()的种子,用来初始化rand()的起始值。

 

如果在rand()之前没有调用srand (),它会自动调用srand(1)一次。

可以把随机数列看做是一个长为RAND_MAX的随机数组,而srand(seed)就是取数组的下标,从这个下标开始往后去数组中的数。

因此如果给seed指定的是一个定值,那么每次程序运行时rand()产生的值都会一样,虽然这个值会是[seed, rand_max(0x7fff))之间的一个随机取得的值。 

所以利用时间作为seed,那么每次取到的值随机性很强的。

srand((unsigned)time(0));

 

例如网游的服务器,每次启动的时候都设置种子srand((unsigned)time(0)),然后所有的随机数都无须再设置种子,相当于每次都依次往后取随机数组中的数,只要rand()就可以取到比较满意的随机数了。

原创粉丝点击