随机数生成器与srand函数混淆

时间:2015-09-20 15:03:15

标签: random generator srand

我想知道为什么我的代码没有像我期望的那样工作。我的意思是我想生成一个0到1之间的双数,我在使用时学到了这一点 (双)rand()/ RAND_MAX,效果很好。但是我读了那个srand(时间(NULL)) 每次编译时都会更改每个生成的随机数。但是,当我一起使用它们时,程序始终生成相同的随机数。为什么会这样?感谢。

这是我的代码:

//srand(time(NULL));
number = (double)rand() / (double)RAND_MAX;

1 个答案:

答案 0 :(得分:0)

srand()函数初始化伪随机数生成器。您可以将其视为指向rand()数字以开始其“计算”。每次编译和运行程序时,srand()函数都会为rand()函数提供time(NULL)的种子(顺便提一下,这是一个非常大的数字每秒都在变化)。如果您不使用srand(),则rand()将始终返回相同的数字序列,因为默认情况下它是一个非标准的不变种子(用于启动'计算'的数字)。您可以尝试为srand()提供一个静态参数,例如:srand(1500)您将看到它将返回不同的数字,但每次编译和运行时它们的序列将再次相同。

欲了解更多信息,请点击此处:

  

http://www.cplusplus.com/reference/cstdlib/srand/

     

http://www.cplusplus.com/reference/cstdlib/rand/