Multithreading 用R中的Snow包生成随机数
我目前正在运行一个通过snow软件包(使用Multithreading 用R中的Snow包生成随机数,multithreading,r,random,snow,Multithreading,R,Random,Snow,我目前正在运行一个通过snow软件包(使用clusterApplyLB)进行多线程处理的程序,在代码中我生成了一个随机数,但看起来所有线程都使用相同的种子来生成这个数,所以它们给出了相同的结果 有没有办法让不同的线程从不同的种子开始 我不能只为每个线程生成一个随机种子,因为这会有同样的问题,而且我也不喜欢在每个线程调用的函数中为种子指定一个新的索引参数(即,被调用的函数为每个线程指定1:32作为种子,因为这不是真正的“随机”)snow软件包中的clusterSetupRNG功能将在集群的每个成员
clusterApplyLB
)进行多线程处理的程序,在代码中我生成了一个随机数,但看起来所有线程都使用相同的种子来生成这个数,所以它们给出了相同的结果
有没有办法让不同的线程从不同的种子开始
我不能只为每个线程生成一个随机种子,因为这会有同样的问题,而且我也不喜欢在每个线程调用的函数中为种子指定一个新的索引参数(即,被调用的函数为每个线程指定1:32作为种子,因为这不是真正的“随机”)snow软件包中的
clusterSetupRNG
功能将在集群的每个成员上设置不同的随机数流。并行包中的clusterSetRNGStream
函数也做同样的事情。只需在调用clusterApplyLB
之前调用其中一个函数,一切都会正常工作
您可能还想查看Harvester软件包,以了解管理多个随机数流的另一种方法(以一种专注于使整个过程可复制的方式)。您能给出一个出现问题的最小代码示例吗?例如,让几个线程绘制一些随机数,并显示它们都存储相同的结果。也许这会有所帮助@Aaron的
rlecuyer
软件包看起来正是我想要的,请随意添加它作为答案,以便我可以接受。否则,我会把它扔到那里,让其他人找它。很高兴听到它有帮助。请回答你自己,谢谢。我现在没有时间给出正确的答案。