我应该多久在C ++应用程序中调用srand()?

时间:2011-08-05 09:53:26

标签: c++ random srand

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

4 个答案:

答案 0 :(得分:16)

如果您只有一个线程,请将种子一次。如果经常重新设置,实际上可能会破坏随机数的某些统计属性。如果您有多个线程,请不要使用rand,而是使用像drand48_r这样的线程安全,它允许您维护每线程状态(这样您就可以为每个线程播种一次)。

答案 1 :(得分:4)

在申请开始时只有一次。

答案 2 :(得分:4)

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

答案 3 :(得分:3)

在应用启动时调用一次