在c中使用伪随机数发生器中的srand的时间函数

时间:2013-07-25 18:03:54

标签: c random srand

#include <time.h>
((unsigned)time(NULL));

我不明白为什么在使用函数srand()创建伪随机数生成器时必须包含时间头文件并在程序中使用time函数。有人可以解释一下这种情况下时间的意义吗?

* 请注意,显示的代码只是程序的一部分。谢谢。

2 个答案:

答案 0 :(得分:4)

这是因为 Pseudorandom Pseudo - 部分。 PRNG对内部存储的种子值执行数学运算,以产生下一个输出数并转换种子。

如果你没有调用time(NULL)或其他一些熵源(例如/dev/rand),那么序列仍然是伪随机(不容易预测)通过检查值),但它对于程序的每次运行都是完全相同的。因为,即使准确预测下一个数字可能非常困难,但 是可能的,因为PRNG 确定性

如果您没有使用srand()提供自己的种子,则默认初始种子通常为 1

time()调用提供初始熵源,使得起始种子无法预测。

答案 1 :(得分:0)

它使代码在第二次调用时不可重复。如果种子不包含种子或固定数字,程序将完全相同,因为随机数将相同。