您的位置:

c语言中随机函数的问题,c语言里的随机函数

本文目录一览:

关于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;

}