【问题标题】:Generating random numbers with Snow package in R在 R 中使用 Snow 包生成随机数
【发布时间】:2013-10-03 23:07:44
【问题描述】:

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

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

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

【问题讨论】:

  • 您能否给出一个出现问题的最小代码示例?例如让几个线程抽取一些随机数并显示它们都存储相同的结果。
  • 也许这会有所帮助? users.stat.umn.edu/~geyer/parallel
  • @Aaron rlecuyer 包看起来正是我想要的,请随时添加它作为答案,以便我接受。否则我会把它扔在那里给其他寻找它的人。
  • 很高兴听到它有帮助。继续自己回答,谢谢。我现在没有时间给出正确的答案。

标签: multithreading r random snow


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2021-11-11
    • 2013-06-01
    • 2018-12-11
    • 2021-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-17
    相关资源
    最近更新 更多