用R中的Snow包生成随机数

时间:2013-09-27 15:19:20

标签: multithreading r random snow

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

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

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

1 个答案:

答案 0 :(得分:1)

snow包中的clusterSetupRNG函数将在群集的每个成员上设置不同的随机数流。并行包中的clusterSetRNGStream函数执行相同的操作。只需在调用clusterApplyLB之前调用其中一个函数,一切都应该正常工作。

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