dre*_*lax 15

根据MSDN文档srand() (假设您使用的是Microsoft的C运行时库),种子是线程本地的,因此您需要调用srand()正在使用的每个线程rand().注意,在其他实现中可能不是这种情况.

引自MSDN:

srand函数设置在当前线程中生成一系列伪随机整数的起点.

  • @Nawaz:它是非标准的,POSIX不要求`srand()`或`rand()`是线程安全的. (2认同)

bam*_*s53 5

即使答案不是特定于平台,我建议你避免srand()使用<random>.C++ 11 <random>库不仅在多线程程序中提供了清晰的语义,而且还为随机数生成提供了更好的工具.它提供了几种不同的随机数发生器,以满足不同的质量,速度和尺寸要求,以及许多标准发行版,因此您不会犯下人们在使用时经常犯的错误rand.