C89:使用rand_r()的多线程随机值

时间:2014-11-03 20:18:52

标签: c multithreading random pthreads c89

所以,我很好奇有人可以使用rand_r命令在多个线程中获取随机值。如果我对种子使用时间(NULL),则每个人都会使用sam种子,因为线程创建得非常接近。这些操作都基于该随机种子,因此所有线程对于我的程序的其余部分保持相同。怎么会得到[USAND RAND_R(* int seed)]一个在所有线程中不同的随机数?

提前致谢。

2 个答案:

答案 0 :(得分:1)

Ubuntu Linux 14.04上的rand_r的man page建议:

  

seedp rand_r()参数指向的值仅提供非常小的数量   状态,所以这个函数将是一个弱的伪随机生成器。请改为drand48_r(3)

答案 1 :(得分:0)

您可以使用arc4random为每个帖子生成种子值。