随机数发生器和线程安全

Car*_*s00 2 c c++ random

几乎C/C++中的每个伪随机生成器(Mersenne,......)都使用某种内部状态,通常是一个短的字节向量.我的问题是,当在多线程环境中使用并共享这样的随机生成器时,让线程安全或让"竞争条件"发生只会增加随机性会"更好"吗?

我知道这个问题非常难以严格回答,但会对任何意见表示赞赏.

R. *_*des 10

让"竞争条件"发生可能会搞砸一切.从技术上讲,数据竞争是未定义的行为,因此可以订购披萨.

但即使没有发生这种情况,内部状态也可能会被破坏,随机序列的所有重要属性都将丢失.例如,您无法再保证一致性.你不能把随机数的产生留给偶然.

  • +1为"你不能让随机数生成的机会." (4认同)

Ale*_*son 5

让竞争条件发生永远不会更好.您的代码可能会崩溃.即使它没有,这几乎肯定会降低所产生数字的质量.人们花费大量精力设计随机数发生器并注入这种噪声极有可能破坏他们的努力.