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