0

我想写一个函数,它会被其他函数多次重复调用。在这个函数内部,它应该生成很多随机数,这部分将被并行处理。如果只运行一次,则可以为每个线程选择不同的种子,以便随机数不相关。但是,如果此函数将被第二次调用,则似乎随机数会重复,除非在以后的调用中再次更改种子。

所以我的问题是,是否有一种生成随机数或重置种子的好方法,以便重复调用此函数以及不同线程生成的随机数真的是随机的?

我需要在 openMP 中执行此操作。是否可以在每次调用函数后分别存储每个线程的生成器状态,以便下次调用该函数时,随机数生成器从上一个状态开始,继续生成不相关数?

谢谢你。

4

1 回答 1

0

首先使用像 MT 这样的强随机数生成器。为了解决您的线程问题,请使用互斥锁保护一个生成器,该互斥锁将为每个线程生成种子。然后在每个线程上使用不同的生成器。
关键是初始化您需要的最少次数,因为您可能需要为种子生成器设置全局程序,并为每个线程的生成器设置线程本地存储。

于 2012-06-10T04:43:27.090 回答