我正在开发一个应用程序。 我正在使用:
int rand_num = rand() % 100;
获取0到99之间的随机整数。 现在,假设我得到41,然后重新启动我的应用程序,它始终是41.相同的序列一遍又一遍,意味着它不是真的随机。
任何解决方案?
答案 0 :(得分:6)
每当您启动应用程序时,都必须通过调用srand(...)
(通常使用time(0)
)随机化种子。请注意,它是一个伪随机数生成器,即rand()
函数生成的值不是均匀分布的。
答案 1 :(得分:4)
rand
生成一个伪随机数,是的。但你可以设定种子。
srand(time(NULL));
int rand_num = rand() % 100;
仅设置一次种子。
或者您可以使用<random>
中的一种方法。
答案 2 :(得分:2)
答案 3 :(得分:2)
正确。 rand()返回一个伪随机数。来自给定开始的序列是确定性的。您可以使用srand()更改起点。