在c++应用程序中,我应该多久调用一次srand() ?

How often should I call srand() in a C++ application?

本文关键字:一次 srand 调用 应用程序 c++ 我应该      更新时间:2023-10-16

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

如果你只有一个线程,只给种子一次。如果你经常重新播种,你可能会破坏随机数的一些统计特性。如果您有多个线程,不要使用rand,而是使用像drand48_r这样的线程安全的东西,它可以让您维护每个线程状态(因此您可以每个线程一次播种)。

仅一次,在应用程序开始时

不,只打一次电话就可以了。使用种子值使每次执行的随机序列相同。当你为了调试而重放游戏时,这可以帮助你确定游戏的行为。

在应用程序启动时调用一次