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