C语言srand(time(0))
yang3122545吧
全部回复
仅看楼主
level 10
这是用于初始化随机函数发生器的,计算机中的随机函数在生成一个随机数时需要用到一个称为随机数发生器的东西,如果不对其进行初始化,每次生成的随机数就会是相同的。
srand函数就用来初始化这个发生器,参数time(0)能够生成从1970年1月1日到当前机器时间的秒数,这个数在你每次执行程序的时候都会不断增长、变化,所以用它当做种子来初始化发生器,就会生成不同的随机数了。
2019年04月03日 14点04分 1
level 10
计算机产生的随机数并不是真正随机的,所以叫 伪随机数。
当“种子”固定时,它产生的随机数序列是不变的,例如产生10个数,这10个数大小是变化的,但只要用这个种子,每次产生的这10个数序列,是一模一样的。
用 srand(time(0)); 设种子,就会因时间变化,得到不同的种子,那么随机数序列就会变化。
time(0) 是当前时间,(精度可能是毫秒)。只要两次跑程序启动时间差别 超过1毫秒,两个序列就不同了(随机)。如果,时间差别不到1毫秒,两个序列就没变化。
--------
错误的程序:
for (i=0;i<5;i++){
srand(time(0)); // 5次的种子若不变
printf("%d ",rand()); // 依次取 5个序列的 第一个数
}
5个数不变化。
-------------------

正确的
程序:
srand(time(0)); // 设1次种子
for (i=0;i<5;i++){
printf("%d ",rand()); //依次取1个序列的第1到第5个随机数
}
5个数变化
2019年04月03日 14点04分 2
level 10
time_t实际上就是长整型long int;
如假包换!!
他用来保存从1970年1月1日0时0分0秒到现在时刻的秒数!
用time()这个函数获取!
对time_t数据类型的值来说,它所表示的时间不能晚于2038年1月18日19时14分07秒。
2019年04月03日 14点04分 3
1