c++ - 随机数生成器和线程安全

标签 c++ c random

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

我知道这个问题很难严格回答,但会感谢任何意见。

最佳答案

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

但即使那没有发生,内部状态也可能被破坏,随机序列的所有重要属性都将丢失。例如,您无法再保证一致性。您不能让随机数的生成纯属偶然。

关于c++ - 随机数生成器和线程安全,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11214394/

相关文章:

c - 在程序执行期间将行写入文本文件 - 更快的方式

c - C语言中梯形法则的二重积分

c++ - 如何让每个线程在 C++11 中使用自己的 RNG

java - 第一个应用程序 - Random.nextInt() Unresolved 引用

c++ - 返回节点指针的函数

c++ - C++ 中的指针作为参数

c++ - clang 3.3 和 constexpr 约束

c++ - 如何按升序编号输入?

c - 计算多个内存块的最快方法

perl - perl中的随机二项分布数据集