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

标签 c multithreading random pthreads c89

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

提前致谢。

最佳答案

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

The value pointed to by the seedp argument of rand_r() provides only a very small amount of state, so this function will be a weak pseudo-random generator. Try drand48_r(3) instead.

关于C89:使用 rand_r() 的多线程随机值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26722447/

相关文章:

c# - NetMq 套接字是线程安全的吗?

java - BlockingQueue.size() 在发布者-订阅者中返回错误的大小

r - 伪随机序列受到另一个伪随机生成器的干扰

C:静态结构

java - 超时后调用方法

c - GTK+ 和 OpenGL

c# - C# 中 0 - 1000 之间的随机数生成器

javascript - 在 JavaScript 和 AS3 中生成真正唯一的 UUID - PRNG 和底层算法

c - 有没有办法修复 stdint 类型的格式说明符警告?

c - 使用 ||或 && 在 strcmp() 函数中它是如何工作的