C语言里面有一行真看不懂了,求教各位srand((unsigned)time(NULL))拜托明白些

讲的清楚些,谢谢

先从rand()函数将起吧,可能比较好理解

函数rand()是真正的随机数生成器,而srand()会设置供rand()使用的随机数种子。srand()括号里面的值,我们称之为种子。系统会根据种子的值放入一套系统算法内 来 生成一组随机数,如果种子的值相同。

比如srand(1),系统将1放入系统算法内,产生一组固定的随机数。那么使用rand()时,rand()取到的值从这组固定的随机数中的第一个开始往后去,调用rand()几次,就取前n个。如下图:

而如果用户在rand()前没有调用过srand(),那么系统默认将1作为伪随机数的初始值,每个系统的算法可能不一样,你电脑上的可能不是这一组,但当种子固定的时候(如上面为1的情况),rand()调用的数据都是该组固定的,随机数。

 

当我们将其该种子改为2 或 3 时候,每次使用的时候都对应于种子的固定的随机数,

因此,人们将固定的种子产生的随机数,为伪随机数。如下

 

 

 

每次运行的时候,都是种子2对应的固定随机数组(系统算法根据种子2算出来的)

 

 

 

每次运行的时候,都是种子3对应的固定随机数组(系统算法根据种子3算出来的)

 

 

那现在就该想,那怎样产生一个真正的随机数呢,

我们考虑怎样让种子随时间变化,那么每次运行的时候,(系统算法根据时间种子算出来的随机数组就不同)。种子time(0)返回的是系统的时间(从1970.1.1午夜算起到你电脑系统上的时间为止的总的秒数),故每秒产生的随机数组都不同。这才是真正的随机数。如下:

 (unsigned)time(NULL)  前面的(unsigned)表示为无符号整型 ,NULL数值上等价于0

用time(NULL)  和time(0)是一样的

 

 

 

建议自己上机验证

本来想多上传几张照片,但上传出错,有兴趣自己验证,呵呵

温馨提示:内容为网友见解,仅供参考
第1个回答  2013-08-03
(unsigned)time(NULL) 产生一个值,srand把此值作为种子,生成随机数
第2个回答  2013-08-03
为随机函数rand();种种子,要不然连续循环调用rand函数产生的随机数都是一样的。

C语言里面有一行真看不懂了,求教各位srand((unsigned)time(NULL))拜托...
先从rand()函数将起吧,可能比较好理解 函数rand()是真正的随机数生成器,而srand()会设置供rand()使用的随机数种子。srand()括号里面的值,我们称之为种子。系统会根据种子的值放入一套系统算法内 来 生成一组随机数,如果种子的值相同。比如srand(1),系统将1放入系统算法内,产生一组固定的随机...

srand( (unsigned)time( NULL ));究竟是什么意思 ?
srand((unsigned)time(NULL))是初始化随机函数种子:1、是拿当前系统时间作为种子,由于时间是变化的,种子变化,可以产生不相同的随机数。计算机中的随机数实际上都不是真正的随机数,如果两次给的种子一样,是会生成同样的随机序列的。 所以,一般都会以当前的时间作为种子来生成随机数,这样更加的随机。

参考地址 - C语言srand((unsigned)time(NULL)); 是什么意思
它的返回值为从 00:00:00 GMT, January 1, 1970 到现在所持续的秒数,然后将time_t型数据转化为(unsigned)型再传给srand函数,即: srand((unsigned) time(&t)); 还有一个经常用法,不需要定义time_t型t变量,即: srand((unsigned) time(NULL));...

C语言srand((unsigned)time(NULL)); 是什么意思
srand()函数用来设置算法的种子,time(NULL)返回当前的时间,先调用srand(time(NULL))是把当前的时间作为种子,是程序每次运行产生不同的随机数序列。涉及到三个概念:1、随机数:数学上产生的都是伪随机数,真正的随机数使用物理方法产生的。2、随机数种子:随机数的产生是由算术规则产生的,srand(seed...

c语言中 srand((unsigned)time(NULL)); 这句话是什么意思(尤其是 NULL...
以时间为种子,其实再产生随机数的函数中都会加,这样可以使得取得随机数更有代表性,否则取出来的数可能是服从正态分布的!一句标准格式而已,需要记的!

C语言srand((unsigned)time(NULL)); 是什么意
C语言中的`srand((unsigned)time(NULL))`是一个用于初始化随机数发生器的关键语句。这个函数的主要作用是为随机数生成器提供一个初始的种子值,以确保每次程序运行时生成的随机数序列不同。`time(NULL)`函数会获取当前系统的时间,以秒为单位,作为种子,通过类型转换为unsigned类型后再传递给`srand`。...

C语言srand((unsigned)time(NULL)); 是什么意思
srand((unsigned)time(NULL));这个是种子函数 为rand函数提供不同的种子 每次运行程序产生不同的随机数 不然rand函数每次运行程序产生的随机数都是一样的

srand((unsigned)time(NULL));是什么意思
srand()函数用来设置算法的种子,time(NULL)返回当前的时间,先调用srand(time(NULL))是把当前的时间作为种子,是程序每次运行产生不同的随机数序列。涉及到三个概念:1、随机数:数学上产生的都是伪随机数,真正的随机数使用物理方法产生的。2、随机数种子:随机数的产生是由算术规则产生的,srand(seed...

srand((unsigned) time(NULL))是什么意思?
而srand是一个设置随机数种子的函数,通常这两个函数是一起使用的,来完成产生随机数的功能。而time(NULL)这个函数的返回值是作为srand函数的参数的,意思是以现在的系统时间作为随机数的种子来产生随机数,至于NULL这个参数,因为这个话就返回到现在时间时候的long秒,只有设置成NULL才能获得系统的时间。

srand( (unsigned)time( NULL ) );怎么用这个东西
这是固定的用法,在调用rand随机数函数前写上这句就行了。这就是设定一个随机数发生器的种子。否则每次生成的随机数都是相同的。

相似回答