使用pthread在C中生成随机数的最正确方法是什么

Raf*_*ffo 8 c random multithreading pthreads srand

我有几个并发运行的线程,每个线程都必须生成随机数.我想了解是否存在要遵循的模式,以了解在主线程中使用srand初始化随机生成器是否正确,或者每个线程是否必须初始化其自己的随机生成器.似乎rand/srand没有被设计为与线程一起使用,我想知道如何处理线程和随机数.谢谢

编辑:我需要纯随机数,但我也有兴趣为测试目的生成确定性序列.我在linux上,但我更喜欢尽可能地编写代码.

Mic*_*eyn 8

在Linux上,您可以将rand_r()用于平庸生成器或drand48_r()函数以获得更好的生成器.两者都是线程安全的替代品rand(),并drand48()通过采取由当前状态的一个参数,而不是使用全局状态.

关于初始化的问题,上面的两个生成器都允许你在你想要的任何点播种,所以在产生你的线程之前你不会被迫播种.