C rand()并不是随机的

时间:2013-02-13 09:05:43

标签: c++ c random

我正在开发一个应用程序。 我正在使用:

int rand_num = rand() % 100;

获取0到99之间的随机整数。 现在,假设我得到41,然后重新启动我的应用程序,它始终是41.相同的序列一遍又一遍,意味着它不是真的随机。

任何解决方案?

4 个答案:

答案 0 :(得分:6)

每当您启动应用程序时,都必须通过调用srand(...)(通常使用time(0))随机化种子。请注意,它是一个伪随机数生成器,即rand()函数生成的值不是均匀分布的。

答案 1 :(得分:4)

rand生成一个伪随机数,是的。但你可以设定种子。

srand(time(NULL));
int rand_num = rand() % 100;

仅设置一次种子。

或者您可以使用<random>中的一种方法。

答案 2 :(得分:2)

使用以下内容:

#include<time.h>

srand(time(NULL));

它将改变伪随机生成器的种子。

有关详细信息,请参阅this

答案 3 :(得分:2)

正确。 rand()返回一个伪随机数。来自给定开始的序列是确定性的。您可以使用srand()更改起点。