热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

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

本文目录一览:1、关于C语言编程中随机数函数的使用问题

本文目录一览:


  • 1、关于C语言编程中随机数函数的使用问题


  • 2、关于C语言随机函数


  • 3、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;

}


推荐阅读
author-avatar
夏慕晚阳
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有