主要内容

在ParfoS循环中重复随机数

如上所述控制工人上的随机数流,在同一作业上工作的集群中的每个工作人员都有一个独立的随机数生成器流。因此,因此,池中的每个工作人员以及每个迭代议案-Loop有一个独特的独立随机数。随后的跑步议案-loop生成不同的数字。

在一个议案-Loop,您无法控制迭代执行的序列,也无法控制哪个工作者运行哪个迭代。因此,即使您重置随机数发生器,即使议案-Loop可以以不同的顺序生成相同的值。

在a中重现相同的随机数议案- 每次循环运行时,都必须通过为每次迭代分配特定的子流来控制随机生成。

首先,使用支持子流的生成器创建要使用的流。金宝app创建流作为一个并行.Pool.Constant.允许所有工人访问流。

sc = parallel.Pool.Constant(RANDSTREAM('threefry')))

在 - 的里面议案-loop,您可以通过循环索引设置子流索引。这可确保每次迭代都使用其特定的随机数集,而不管哪个工人运行该迭代或序列迭代运行。

r =零(1,16);议案i = 1:16 Stream = sc.value;%从常数提取流stream.substream = i;r(i)= rand(流);结尾R.
r =柱1到8 0.3640 0.8645 0.0440 0.0440 0.7564 0.5323 0.8075 0.2145 0.9128柱9至16 0.4057 0.0581 0.5515 0.4347 0.3531 0.4677 0.8287 0.2312 0.8287 0.2312 0.8287 0.2312 0.8287 0.2312

也可以看看

|

相关话题