我有一个在各个地方调用 rand() 的 C++ 应用程序。我是否需要srand()
定期初始化以确保 rand() 是合理随机的,还是在应用程序启动时调用一次就足够了?
问问题
2390 次
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 回答