如何产生一个从x到y的k个随机数 Random(int x,int y ,int k)

来源:互联网 发布:java 函数形参和实参 编辑:程序博客网 时间:2024/05/07 04:27

1.设置随机数种子

若不进行设置,系统默认为种子为1,那么每次运行程序产生的随机数是一样的;

通过void srand(unsigned int seed)来设置种子

为了使每次运行程序产生的一组随机数不一样,就要同步改变种子的值

因为系统时间每个时刻都不一样,所以可以利用time(0)获取系统时间作为种子


所以: srand (time(0))可以实现随机数的不可预见性


2.控制随机数产生的范围

rand( )的原始范围是(0,RAND_MAX),RAND_MAX的值包含在头文件stdlib.h当中;

若要得到10以内的值(0-9),可以通过除10取余的方式:rand( )%10;

同理,若要得到n以内的值(0,n-1), 则:rand( )%n

如果想得到特点范围[x,y]的随机值,可以分成两步:

①先得到【0,y-x】的值,即y-x+1以内的值:rand( )%(y-x+1);

②加上x,即可得到【x,y】的值:rand( )%(y-x+1)+x


综上所述:在x,y之间产生k个随机数

void Random(int x,int y,int k)

{

srand(time(0));

int i;

for(i=1;i<=k;i++)

{

printf("%d ",rand( )%(y-x+1)+x)

}

}

0 0
原创粉丝点击