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

如题所述

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

温馨提示:内容为网友见解,仅供参考
第1个回答  2019-07-23
这是两个函数的调用
一个是
srand(unsigned
int)
;
一个是
time(long
*t)
;
这里是把他们两个合在一起写,time函数的返回值作为srand函数的
参数
,而NULL就是time函数的输入参数
,time
函数要求参数是一个指针,因此得用
NULL,NULL代表指针不知向任何变量,而
0
则是
int
型的,类型不符
如果非要用0,
也可以进行强制类型转换,
srand((unsigned)time
(
(long
*)
0))
;
相似回答