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

函数一: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()就可以取到比较满意的随机数了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值