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

lau*_*ent 11 c++ random srand

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

Ker*_* SB 16

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

  • @MSalters:当然,我会在任何一天使用新的`<random>`功能.他们只是更多地参与设置,所以我想我会回答问题的精神 - 但事实上,如果可以的话,确实使用`<random>`! (2认同)