我正在开发一个应用程序。我正在使用:
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() 更改起点。