2

我目前正在运行一个通过雪包(使用clusterApplyLB)进行多线程的程序,并且在代码中我生成了一个随机数,但似乎线程都使用相同的种子来生成这个数字,所以它们给出了相同的结果。

有没有办法让不同的线程从不同的种子开始?

我不能只为每个线程生成一个随机种子,因为这会有同样的问题,而且我也不热衷于在每个线程调用的函数中为种子设置一个新的索引参数(即被调用的函数将 1:32 作为每个线程的种子,因为这并不是真正的“随机”。)

4

1 回答 1

2

snow 包中的clusterSetupRNG函数将为集群的每个成员设置不同的随机数流。clusterSetRNGStream并行包中的函数做同样的事情。只需在调用之前调用其中一个函数clusterApplyLB,一切都应该正常。

您可能还想查看harverr 包,以了解另一种管理多个随机数流的方法(以一种专注于使整个过程可重现的方式)。

于 2013-09-27T16:16:20.973 回答