c语言中 srand((unsigned)time(NULL)); 这句话是什么意思(尤其是 NULL)

作者&投稿:席若 (若有异议请与网页底部的电邮联系)
c语言中 srand(time(NULL)); 这句话是什么意思(尤其是 NULL)~

c语言中 srand(time(NULL)); 的意思是:使用当前时间进行随机数发生器的初始化。
time_t time(time_t *t); 是C标准库函数,如果t是空指针(NULL),直接返回当前时间。如果t不是空指针,返回当前时间的同时,将返回值赋予t指向的内存空间。time() 是指返回自 Unix 纪元起的当前时间的秒数的函数,主要用来获取当前的系统时间,返回的结果是一个time_t类型。
srand函数是随机数发生器的初始化函数。原型:void srand(unsigned int seed); srand和rand()配合使用产生伪随机数序列。

扩展资料:
srand函数的相关信息:
1、语法:void srand (unsigned seed);
2、参数说明:unsigned seed:随机数产生器的初始值(种子值)。
3、功能说明:srand设置产生一系列伪随机数发生器的起始点,要想把发生器重新初始化,可用1作seed值。任何共它的值都把发生器匿成一个随机的起始点。rand检索生成的伪随机数。在任何调用srand之前调用rand与以1作为seed调用srand产生相同的序列。
此函数可以设定rand函数所用的随机数产生演算法的种子值。任何大于一的种子值都会将rand随机数所产生的虚拟随机数序列重新设定一个起始点。
4、包含文件:stdlib. h
5、返回值:无
参考资料来源:百度百科-time()
参考资料来源:百度百科-srand

srand()函数用来设置算法的种子,time(NULL)返回当前的时间,先调用srand(time(NULL))是把当前的时间作为种子,是程序每次运行产生不同的随机数序列。
涉及到三个概念:
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

以时间为种子,其实再产生随机数的函数中都会加,这样可以使得取得随机数更有代表性,否则取出来的数可能是服从正态分布的!
一句标准格式而已,需要记的!

这是两个函数的调用
一个是 srand(unsigned int) ;
一个是 time(long *t) ;

这里是把他们两个合在一起写,time函数的返回值作为srand函数的 参数 ,而NULL就是time函数的输入参数 ,time 函数要求参数是一个指针,因此得用 NULL,NULL代表指针不知向任何变量,而 0 则是 int 型的,类型不符
如果非要用0, 也可以进行强制类型转换, srand((unsigned)time ( (long *) 0)) ;

你可以看看time.h中那个函数的原型 _CRTIMP time_t __cdecl time(time_t *);
这个函数接受的是一个指针,一般指针要么指向一个地址,要么就是NULL
time_t这个结构体在time.h中也有


绥德县17116922411: c语言 产生一个随机数,如何让它每一次运行出现不同的随机数结果? -
郁顷加尔: #include #include int main(void) { int a; srand((unsigned)time(NULL)); //用时间初始化随机数生成种子 a=rand()%10; printf("%d\n",a); } 2 Press any key to continue9 Press any key to continue

绥德县17116922411: c语言rand -
郁顷加尔: rand()函数,一般根srand()函数一起用.它们在一起,作用是:产生一个随机数.通常格式为:srand ( (unsigned) time (NULL) ); a=rand()%x; //a,x,均为整型变量,其中,x在之前应被赋值.srand函数里面的unsigned也可以换成其它的.例如:int之类的数据类型,但结果也会有相应的变化.通过rand函数产生随机数以后,用%x来限定它的范围.即:0<=a<x.其原理是:用那个随机数,去除以x,留下所得余数,作为最终结果.下面来说一下你那道题: rand()%90,就是从0到89随即选取一个数. 最后再把这个数+10,并赋给a[i][j]这个元素.明白了吧?

绥德县17116922411: c语言中,散播种子srand(time(NULL)),怎么才能显示出种子的具体值? -
郁顷加尔: 你可以先用int seed = time(NULL);记得种子的值,再用srand 另,time(NULL)是把时钟数取出作为随机种子

绥德县17116922411: 谁能结实一下C语言中随机srand和rand函数的区别 -
郁顷加尔: rand()产生一个0~32767之间的伪随机数.而srand(unsigned t)是为rand()产生伪随机数下一个“种子”.所谓“种子”就是给伪随机发生器赋一个初值,因为如果初值一样,后面产生的伪随机数的规律也就一样,达不到“随机”的目的.所以srand(unsigned t)一般是用机中的实时时间来启动的,因为实时时间的值每时每刻都在变化,这样启动的rand()函数产生的伪随机数序列就能达到以假乱真的效果.

绥德县17116922411: C语言 srand() -
郁顷加尔: srand函数一般是用来初始化随机状态,通俗理解为初始化随机种子,然后再调用rand()函数来产生随机数

绥德县17116922411: C语言中怎样输出一个随机二维数组 -
郁顷加尔: #include<stdlib.h> srand 和rand函数头文件 #include<time.h> time函数 srand((unsigned)time(NULL)) 初始化种子 rand函数 随机生成数

绥德县17116922411: 请教C语言中srand随机函数 -
郁顷加尔: 呵呵,这个是我遇到过的问题,并进行了一些研究.其实这是因为srand()函数是一个随机数产生函数,其意思就是指C语言里的随机数都是由它来控制产生的!!!如果在应用srand()函数之前就用随机函数rand(),则相当于使用了srand(1); 而将srand( (unsigned)time( NULL ) );这条语句放在了for循环里,即是用了srand( (unsigned)time(0 ));故此句语句不变的话,产生的随机数就不变!!!不懂的话可以问我!

绥德县17116922411: C语言中:srand((unsigned)time(&t));是什么意思
郁顷加尔: time_t t; srand((unsigned) time(&t)); srand函数是随机数发生器的初始化函数,原型: void srand(unsigned seed); 它需要提供一个种子,如: srand(1); 直接使用1来初始化种子.不过常常使用系统时间来初始化,即使用 time函数来获得系统...

绥德县17116922411: C语言中如何表示概率 -
郁顷加尔: 现成的函数没有,可以通过产生随机数实现概率. srand((unsigned)time(NULL)); int m,r=0; m=rand()%10; if(m==1||m==2||m==3||m==4||m==5||m==6||m==7) {r=r+1; } 这段代码中,执行r=r+1的概率就是0.7 希望可以帮到你

绥德县17116922411: srand((unsigned)((int)time(&t)*(i+1))) -
郁顷加尔: t是当前系统时间变量,用它的地址&t调用函数时间函数time,将返回值强制为int型(time返回的是系统时间日历时)再乘以(i+1)后,再强制为unsigned int型;用这一unsigned int型结果为参数调用随机种子函数srand来预置系统的随机序列发生器的初始状态.这样做的目的是为了后面的rand函数产生的伪随机序列更逼真为随机序列,以达到以假乱真的效果.这是因为伪随机序列发生器的初始状态被不断变化的系统时间和变量i初始化,通常是不会重复的.

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网