我正在阅读 this section最后一段指出示例代码不是线程安全的。我的问题是:这不会有助于增加其随机性(即如果多个线程同时执行这些行)吗?
最佳答案
PRNG 经过精心设计(好吧,也许不是 RANDU)以产生可预测且充分随机分布的结果。它们不必是真正随机的,它们只需要满足统计质量测试,产生足够大的周期并且使用相同的种子是确定性的。
如果您碰巧同时从多个线程使用生成器,所有这些保证都会付之东流。最重要的是,您无法获得可重现的结果(这在模拟中极为重要)。然后状态可能会改变,或者您可能会在不同的线程中两次获得相同的数字,诸如此类。
你绝对不想去那里。每个线程创建一个 PRNG(最好使用线性独立的种子)。
关于c - 非线程安全会增加乘以进位伪随机数生成器的随机性吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12099992/