【问题标题】:MATLAB: Generating random numbers in parfor or parallel computingMATLAB:在 parfor 或并行计算中生成随机数
【发布时间】:2017-03-04 13:37:27
【问题描述】:

在单个 for 循环中,我使用单个随机种子来生成所有“随机数”。它们非常随机,因为我一次从流中取出一个,没有任何间隙。

但是,在 parfor 中,每个工人使用不同的随机种子,因此,获得的数字可能会相互干扰。因此,它们并不是真正随机的,因为它们不是来自单个种子。

另外,就我而言,我不知道每个工人事先需要多少个随机数。我该如何解决这个问题?

【问题讨论】:

  • 哇。这将很难。我会做什么:让所有工作人员使用相同的种子,但在创建的大数组上使用不同的数字。想象一下,他们每个人只需要 1 个,然后制作所有例如80 名工人每人创建 80 个随机数,并且只使用一个。或者使用随机数将切片变量传递给工人。是的,这两种方法都有局限性,但是您正在处理一个无法解决的问题
  • 查找分布式播种。有很多方法。使用具有不同配置的 MT(有大约 600 个);为此(和自定义代码)还有一篇额外的论文(关于不干扰的强烈论据)。使用具有跳跃能力的 PRNG(例如,跳跃 2^40 个样本)。跨越式等等。
  • @Ander Biguri 谢谢。但每个工人不仅使用 1 个随机数。我不知道每个工人事先需要多少个随机数。
  • @sascha 你的意思是在每个worker上使用MT不同的配置,一个worker的随机数不会干扰另一个worker的随机数吗?

标签: matlab random


【解决方案1】:

parfor 中,工作人员使用来自专门设计用于并行使用的随机数生成器的不同流。因此,您可以依赖parfor 内部生成的具有合理统计质量的随机数。更多内容:http://www.mathworks.com/help/distcomp/control-random-number-streams.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多