189 8069 5689

c语言设置随机时间函数,c语言如何设置随机数

C语言srand((unsigned)time(NULL)); 是什么意思

srand()函数用来设置算法的种子,time(NULL)返回当前的时间,先调用srand(time(NULL))是把当前的时间作为种子,是程序每次运行产生不同的随机数序列。

成都创新互联成都企业网站建设服务,提供成都网站建设、成都网站设计网站开发,网站定制,建网站,网站搭建,网站设计,自适应网站建设,网页设计师打造企业风格网站,提供周到的售前咨询和贴心的售后服务。欢迎咨询做网站需要多少钱:028-86922220

涉及到三个概念:

1、随机数:数学上产生的都是伪随机数,真正的随机数使用物理方法产生的。

2、随机数种子:随机数的产生是由算术规则产生的,srand(seed)的随机数种子不同,rand()的随机数值就不同,倘若每次的随机数种子一样,则rand()的值就一样。所以要产生随机数,则srand(seed)的随机数种子必须也要随机的。

3、用srand()产生随机数种子

原型:void srand ( unsigned int seed )。作用是设置好随机数种子,为了让随机数种子是随机的,通常用time(NULL)的值来当seed。

扩展资料:

C语言其他产生随机数的方法。

1、函数名: rand

功能: 随机数发生器

用法: void rand(void);

程序例:

2、函数名: random

功能: 随机数发生器

用法: int random(int num);

程序例:

3、函数名: randomize

功能: 初始化随机数发生器

用法: void randomize(void);

程序例:

参考资料来源:百度百科--srand

c语言编程有个地方不会 怎么用srand和time函数生产随机数

你先要知道,计算机并不能产生真正的随机数。他只是使用你提供的一个初始值,每次对这个值进行一个比较复杂的运算(各种位运算+奇奇怪怪的计算,详情请查阅伪随机算法),意思是计算机的随机数,其实也是可以根据他的随机函数算出来的。。

srand()函数是添加随机数种子,其实就是设置这个初始值,如果不要这个函数的话,rand()函数生成的序列是固定的。为了保证每次随机值都尽量不同,一般取系统当前时间戳作为随机函数种子,这样效果较好,于是就有了你看到的代码srand(time(NULL))

rand()函数是取随机值。有了随机种子之后,每次调用rand函数会生成一个范围在0到MAX_RAND的随机值。MAX_RAND这是个宏,在不同的IDE里面有不同的定义,在我的VS2012里面,他等于0x7fff。

意思是rand()函数每次生成的随机数范围在0到0x7fff之间。

看你的代码应该是要叫人猜计算机生成的随机数,如果这个范围过大,就没什么意思了,我就假设你需要的随机数是0到9之间的吧。那么你生成随机数的代码就应该是:

rand()%10;

我不是很清楚你的代码到底要表达什么,我自己随便写了一份参考代码:

#includestdio.h

#includetime.h

#includestdlib.h

int

ReadInt()

{

int

MyRand;

printf("please

guess

a

number,

range(0~9):");

scanf("%d",MyRand);

return

MyRand;

}

int

main()

{

int

MyRand;

srand(time(NULL));

while(true)

{

int

x=rand()%10;

MyRand=ReadInt();

if(MyRand==x)

{

printf("you

win!\n");

break;

}

else

{

printf("you

guess

wrong!

you

guess:%d

but

the

answer

is:%d

now\nplease

try

again\n",MyRand,x);

}

}

return

0;

}

C语言 随机函数

首先一楼代码是可以的,只是num

=

rand()%10的10后漏了个0;

详细回答你的疑惑:

1、你要用的随机函数rand是包含在库文件stdib.h中,如果不引用#include当然出错!:

error

C2065:

'rand'

:

undeclared

identifier

2、rand是个伪随机函数,如果不用srand每一次运行程序产生的随机数一样的,

因此使用一个时间种子函数srand,它的参数是电脑的系统时间,该函数包含在库文件time.h中,这样由于每次运行程序的时间不同,种子不同,生成的随机数也不同,更接近真正的随机数。

希望能帮到你!

c语言的随机函数怎样用?、

#include stdlib.h

#include time.h

int main( )

{

int a[100]; /* 存放随机数的数组 */

time_t t1; /* 用于存放时间 */

time(t1); /* 取得当前系统时间 */

srand(t1); /* 设置随机数种子 */

for (i = 0; i 100; i ++) /* 循环生成10个随机数,放到数组a中 */

a[i] = 10 + rand( ) % 90;

/* 数值范围在10到99间,需要不同范围的数据请自行更改 */

...

}

关于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语言随机函数怎么弄

C++的随机函数

C++/c语言里,是没有办法得到一个真正的随机数序列的.想要等到一个真正的随机数序列,必须使用特定的随机数硬件发生器.也就是说,软件是没有办法产生真正的随机数.因为软件必须按照一定的逻辑来编写.既然是按照特定的逻辑(也就是说算法)来编写 ,那么产生的运算结果就是一定的.这一点,就是软件天生的特性.想想看,如果一个软件,同样的代码喝条件下,每次运行的结果不一样,那还有谁会用?

所以,在C++/C语言中,就有了"伪随机数"的概念.意思也就是说,通过一个特定的算法,产生一个假的随机数序列.那么,程序员又希望这个随机数序列跟接近真正的随机数序列,也就是希望得到的序列的不一样,所以有了一个"播种"的概念.

srand(unsgined int seed);

这个函数就是用来"播种"的.通过一个"种子"(SEED),来控制随机数的序列不一样.只要种子不一样,那么通过rand()得到的随机数序列就不一样.反过来说,如果种子一样,那么通过srand()得到的随机数就是一样的.

srand(0);

for( int i = 0; i 10; i++)

{

coutrand()' ';

}

你试着将这个程序执行两次,你会发现两次的结果一样。那是因为,一旦“种子”确定了,那么这个随机数序列就确定了。软件天生的“行为可重复性”决定了这一点。

所以,一般在播种的时候,喜欢用一个随机的种子.在绝大多数的情况下,会使用当前的系统时间.这个数字在每次程序运行的时候都不一样.除非你手动的改系统时间.

编程时有时需要随机输入一些数,这是调用随机函数可以完成此相命令.

# include “stdio.h”

# include “stdlib.h”

# include “time.h” /*需引用的头文件*/

srand((unsigned)time(NULL)); /*随机种子*/

n=rand()%(Y-X+1)+X; /*n为X~Y之间的随机数*/

进一步解释

srand()设置随机数种子,rand()得到随机数

random()的函数原型为int random(int num)

它的作用是Returns an integer between 0 and (num-1)

而randomize的函数原型为void randomize(void)

它的作用是Initializes the random number generator with a random value.

它们的区别是前者限定随机数的产生范围,而后者这完全是随机的,另外使用这两个函数时

应含入

#include stdlib.h

#include time.h

头文件。

一个例子:

用法如下:

#include stdlib.h

#include stdio.h

#include time.h

void main( void )

{

int i,k;

srand( (unsigned)time( NULL ) ); //用系统时间当种子,对随机函数进行初始化

for( i = 0; i 10;i++ )

{

k=rand()%100; //产生各个随机数

printf( " k=%d\n", k );

}

}

再抄个~

在VC中设计到随机数有两个函数

srand() and rand()

srand() 的作用是是一个种子,提供每次获得随机数的基数而已,rand()根据种子而产生随机数

注意

1:srand() 里的值必须是动态变化的,否则得到的随机数就是一个固定数

2:其实可以不用写srand() ,只用rand()就可以了,省事,简单,例子如下

如果我们想得到一个 0-60的随机数那么可以写成

int i;

i=rand()%60;

就可以了。

当然最好有个统一的标注如下:

int i;

srand((unsigned)time( NULL ));

i=rand()%60;

这样就OK了

例题随机取数,取1到99之间

1、#include iostream.h

#include stdlib.h

#include time.h

int main()

{

int n;//n为随机数

srand(time(NULL));

n=1+rand()%99;

coutn;

return 0;

}

2、#includeiostream.h

#includestdlib.h

#includetime.h

void main()

{

int a;

srand((unsigned) time(NULL));

a=rand()%99+1;

couta;

}

3、#include iostream.h

#include stdlib.h

#include time.h

void main()

{

int j;

srand((unsigned)time(NULL));

loop:

j=rand()%100;

if(j==0)

{

cout"error"endl;

goto loop;

}

else coutjendl;

}

4、如果象楼上的你的那种做法做下去

那应该是100%而不是98%

你一定是少了

srand(...........);

其实这个程序也不错

#include iostream

#include cstdlib

using namespace std;

int main()

{

int counter;

for(counter=0;counter10;counter++)

{

srand(counter+1);

cout"Random number"counter+1":"rand()endl;

}

system("pause");

return 0;

}

5、#include iostream.h

#include stdlib.h

int main()

{

int shu =100;

int n;//n为随机数

srand(shu);

n=rand() % shu;

coutn;

return 0;

}

不拿时间作随机数,可以设一个种子数不清100这样就产生0~99间的随机数。

不过我没有测试从复率,谁测了告诉我一下。


当前名称:c语言设置随机时间函数,c语言如何设置随机数
本文URL:http://cdxtjz.com/article/hdepgj.html

其他资讯