随机函数

  • 格式:doc
  • 大小:28.50 KB
  • 文档页数:3

rand 和srand的区别
概述:srand初始化随机种子,rand产生随机数。
srand()的作用是生成一个“种子”,然后你再用rand()取随机数
的时候就用这个种子来经过计算得到一个数字,在种子相同的情况下
rand()的结果是一样的,所以为了保证rand()的随机性,经常用
当前的时间作为种子,这样就可以保证rand()每次的结果都是不同
的。
共同点:
两函数都包含于头文件stdlib.h中。都是随机产生的。
区别:
1.rand 随机函数发生器
用法:int rand(void);
用法:void srand(unsigned seed);
返回值:一定范围内的随机数。
函数的说明:rand函数实现是内部线性同余发得到的。他的周期很长,
在一定的范围内是随机的,既rand()会产生一范围在0到Rand_MAX
之间的机数。在调用rand()函数前要调用,由srand()产生的随
机的种子,如果省略,则默认为种子为1.则产生的为假随机数。每次
产生的结果相同。
实例:
/* 产生介于1 到10 间的随机数值,此范例未设随机数种子,完整的
随机数产生请参考 后面的srand()*/
#include
int main()
{
int i,j;
for(i=0;i<10;i++)
{
j=1+(int)(10.0*rand()/(RAND_MAX+1.0));
printf("%d ",j);
}
return 0;
}
产生结果:
9 8 7 4 5 6 4 4 4 7 //第一次结果
9 8 7 4 5 6 4 4 4 7//再次执行仍然产生相同的随机数
2.sand随机数发生器
原型:void srand(unsigned seed);
作用:产生一个随机的中子。
用法: srand和rand()配合使用产生伪随机数序列。rand函数在产生
随机数前,需要系统提供的生成伪随机数序列的种子,rand根据这个
种子的值产生一系列随机数。srand(unsigned seed)通过参数seed改变
系统提供的种子值,从而可以使得每次调用rand函数生成的伪随机
数序列不同,从而实现真正意义上的“随机”。通常可以利用系统时
间来改变系统的种子值,即srand(time(NULL)),可以为rand函数提
供不同的种子值,进而产生不同的随机数序列
范例
/* 产生介于1 到10 间的随机数值,此范例与执行结果可与rand()
参照*/
#include
#include
int 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 7 8 7 4 5 7 4
第二次结果:7 8 4 5 7 8 4 4 1 2