c - 非线程安全会增加乘以进位伪随机数生成器的随机性吗?

标签 c algorithm random

我正在阅读 this section最后一段指出示例代码不是线程安全的。我的问题是:这不会有助于增加其随机性(即如果多个线程同时执行这些行)吗?

最佳答案

PRNG 经过精心设计(好吧,也许不是 RANDU)以产生可预测且充分随机分布的结果。它们不必是真正随机的,它们只需要满足统计质量测试,产生足够大的周期并且使用相同的种子是确定性的。

如果您碰巧同时从多个线程使用生成器,所有这些保证都会付之东流。最重要的是,您无法获得可重现的结果(这在模拟中极为重要)。然后状态可能会改变,或者您可能会在不同的线程中两次获得相同的数字,诸如此类。

你绝对不想去那里。每个线程创建一个 PRNG(最好使用线性独立的种子)。

关于c - 非线程安全会增加乘以进位伪随机数生成器的随机性吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12099992/

相关文章:

c++ - 包含 "flint.h"或 "flint/flint.h"是更好的做法

c - *变量!=0 是什么意思?

algorithm - 分词时间复杂度

c - 我的算法有什么问题?

c# - 批量生成随 secret 码

随机顺序和分页 Elasticsearch

python - 一个随机数生成器 vs 六个

c - strtok() 未打印正确的值

c - C 中的 Malloc、realloc 和返回指针

c++ - 确定圆弧中点的算法