我有多个线程同时运行,每个线程都必须生成随机数。我想了解是否有可遵循的模式,了解在主线程中使用 srand 初始化随机生成器是否正确,或者每个线程是否必须初始化自己的随机生成器。看来 rand/srand 尚未设计为与线程一起使用,我想知道如何一起处理线程和随机数。
谢谢
编辑:我需要纯随机数,但我也对生成用于测试目的的确定性序列感兴趣。我使用的是linux,但我更喜欢编写尽可能可移植的代码。
在 Linux 上您可以使用rand_r()对于普通发电机或drand48_r()功能以获得更好的功能。两者都是线程安全的替代品rand()
and drand48()
,通过采用由当前状态组成的单个参数,而不是使用全局状态。
关于您关于初始化的问题,上面的两个生成器都允许您在您想要的任何点播种,因此您不会被迫在生成线程之前播种它们。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)