我想知道为什么我的代码没有像我期望的那样工作。我的意思是我想生成一个0到1之间的双数,我在使用时学到了这一点 (双)rand()/ RAND_MAX,效果很好。但是我读了那个srand(时间(NULL)) 每次编译时都会更改每个生成的随机数。但是,当我一起使用它们时,程序始终生成相同的随机数。为什么会这样?感谢。
这是我的代码:
//srand(time(NULL));
number = (double)rand() / (double)RAND_MAX;
答案 0 :(得分:0)
srand()
函数初始化伪随机数生成器。您可以将其视为指向rand()
数字以开始其“计算”。每次编译和运行程序时,srand()
函数都会为rand()
函数提供time(NULL)
的种子(顺便提一下,这是一个非常大的数字每秒都在变化)。如果您不使用srand()
,则rand()
将始终返回相同的数字序列,因为默认情况下它是一个非标准的不变种子(用于启动'计算'的数字)。您可以尝试为srand()
提供一个静态参数,例如:srand(1500)
您将看到它将返回不同的数字,但每次编译和运行时它们的序列将再次相同。
欲了解更多信息,请点击此处: