1

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

int rand_num = rand() % 100;

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

有什么解决办法吗?

4

4 回答 4

7

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

于 2013-02-13T09:06:47.433 回答
4

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

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

只设置一次种子。

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

于 2013-02-13T09:07:16.220 回答
3

使用以下内容:

#include<time.h>

srand(time(NULL));

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

有关更多信息,请参阅

于 2013-02-13T09:07:06.327 回答
3

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

于 2013-02-13T09:07:07.103 回答