random函数实现

rand(产生随机数)  
相关函数 
srand
 
表头文件 
#include<stdlib.h>
 
定义函数 
int rand(void)
 
函数说明 
rand()会返回一随机数值,范围在0至RAND_MAX 间。在调用此函数产生随机数前,必须先利用srand()设好随机数种子,如果未设随机数种子,rand()在调用时会自动设随机数种子为1。关于随机数种子请参考srand()。
 
返回值 
返回0至RAND_MAX之间的随机数值,RAND_MAX定义在stdlib.h,其值为2147483647。
 
范例 
/* 产生介于1 到10 间的随机数值,此范例未设随机数种子,完整的随机数产生请参考
srand()*/
#include<stdlib.h>
main()
{
int i,j;
for(i=0;i<10;i++)
{
j=1+(int)(10.0*rand()/(RAND_MAX+1.0));
printf("%d ",j);
}
}
 
执行 
9 4 8 8 10 2 4 8 3 6
9 4 8 8 10 2 4 8 3 6
 
  



srand(设置随机数种子)  
相关函数 
rand
 
表头文件 
#include<stdlib.h>
 
定义函数 
void srand (unsigned int seed);
 
函数说明 
srand()用来设置rand()产生随机数时的随机数种子。参数seed必须是个整数,通常可以利用geypid()或time(0)的返回值来当做seed。如果每次seed都设相同值,rand()所产生的随机数值每次就会一样。
 
返回值 

范例 
/* 产生介于1 到10 间的随机数值,此范例与执行结果可与rand()参照*/
#include<time.h>
#include<stdlib.h>
main()
{
int i,j;
srand((int)time(0));
for(i=0;i<10;i++)
{
j=1+(int)(10.0*rand()/(RAND_MAX+1.0));
printf(" %d ",j);
}
}
 
执行 
5 8 8 8 10 2 10 8 9 9
2 9 7 4 10 3 2 10 8 7
 
 
实现原理:  产生整数rand的原理是: 
y=ax+b(mod   n)其中,n一般是一个很大的素数,几万。 
a也是大素数。而且a,b,n都是常数。所以rand的产生决定于x, 
他被称为seed。 
每一个seed都是上一次产生的y的函数。这样,如果直接取seed=y的话, 
虽然产生的rand之间相关性甚小,但只要知道某个y,就能推知以后的rand。 
为避免这种情况,一般取seed为y和当时计算机的时间的函数,如seed=y+t 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值