我正在研究一些代码来生成一些艺术图像。部分过程是随机的。用户可以设置随机种子以获得可重复的结果。
如果我在不同的线程上使用相同的参数同时生成2个图像,我看到我得不到相同的结果。我怀疑这是因为srandom()
/ random()
不是线程安全的。
Linux似乎from this question具有可重入的其他srandom_r()
和random_r()
方法。但我无法在MacOS上找到那些。
通过阅读srandom()
/ random()
的手册页,我看到还有initstate()
和setstate()
,但是从手册页中不清楚使用它们会解决问题。这是他们的目的吗?
我可以使用Mersenne Twister
,但希望我可以使用的操作系统有一些原生的东西。这样的事情存在吗?