12

我有一个在各个地方调用 rand() 的 C++ 应用程序。我是否需要srand()定期初始化以确保 rand() 是合理随机的,还是在应用程序启动时调用一次就足够了?

4

4 回答 4

18

如果您只有一个线程,请播种一次。如果您经常重新播种,您实际上可能会破坏随机数的一些统计特性。如果您有多个线程,则根本不要使用rand,而是使用类似线程安全的东西drand48_r,它可以让您维护每个线程的状态(因此您可以为每个线程播种一次)。

于 2011-08-05T09:56:22.290 回答
4

只有一次,在您的应用程序开始时。

于 2011-08-05T09:55:16.653 回答
4

不只是调用一次就可以了。使用种子值使每次执行的随机序列相同。当您重播游戏以进行调试时,这可能有助于(例如)确定游戏的行为。

于 2011-08-05T09:55:56.490 回答
3

应用启动时调用一次

于 2011-08-05T09:55:08.580 回答