本文目录一览:
关于C语言编程中随机数函数的使用问题
rnd是vb中的随机函数,应该用rand();
函数说明
rand()会返回一随机数值,范围在0至RAND_MAX
间。在调用此函数产生随机数前,必须先利用srand()设好随机数种子,如果未设随机数种子,rand()在调用时会自动设随机数种子为1。关于随机数种子请参考srand()。
srand((int)time(0));
是产生的随机数每次不一样。
#includetime.h
#includestdlib.h
main()
{
int
i,j;
srand((int)time(0));
for(i=0;i10;i++)
{
j=1+(int)(10.0*rand()/(RAND_MAX+1.0));
printf("
%d
",j);
}
}
执行
5
8
8
8
10
2
10
6
9
9
2
9
7
4
10
3
2
10
8
7
关于C语言随机函数
把
srand(
time(0)
);
放在循环外每次产生随机数的种子也是一样的啊,为什么产生的随机数就不一样了?
因为随机函数只需要一个种子就能产生一系列的随机数,并不是每个随机数都需要一个种子。
你把
srand(time(0))
放到循环前面就可以了。
原因:
time(0)返回的是系统的时间(从1970.1.1午夜算起),单位:秒,而那个循环运行起来耗时连0.000001秒都不到!
也就是说,srand(time(0))
连着4次的种子是一样的,种子一样,生产的随机数当然是一样了。
如果你在把srand()放循环里面,在中间加个sleep函数,消耗一点时间(间隔大于1秒),那么生成的rand
就不一样了.但是这样做很不好,连着两次用srand生成的种子,间隔一样,生产的随机数间隔有会有规律性。
另:因为两次运行同一程序的时间肯定是不一样的,所以把srand放在循环前面可以得不同的种子,这样才能得到你想要的。
c语言中关于随机函数的问题
#include
"stdio.h"
#include
"stdlib.h"
#include
"time.h"
int
Rrand(int
min,int
max);
main()
{
int
i;
int
a[200];
srand((unsigned)time(NULL));
/*将当前时间设置成随机函数的种子,以每次运行产生的数都不一样
*/
for(i=0;i20;i++)
a[i]=Rrand(0,60);
for(;i60;i++)
a[i]=Rrand(59,70);
for(;i140;i++)
a[i]=Rrand(69,80);
for(;i180;i++)
a[i]=Rrand(79,90);
for(;i200;i++)
a[i]=Rrand(89,101);
for(i=0;i200;i++)
printf("%d\t",a[i]);
}
int
Rrand(int
min,int
max)//在min和max之间整数中生成一随机数并返回(不包括min和max),若不能产生随机数返回-1.
{
int
num;
if(max-min1min=0)
{
num=rand()%max;
if(nummin)
return
num;
else
return
Rrand(min,max);
}
else
return
-1;
}