我正在运行蒙特卡罗模拟,其中使用种子 12345 生成 300 个数据点的序列,但是我想将该序列分成两部分,以便我可以在两台单独的机器上运行它们并并行化模拟。我可以简单地通过使用相同的种子(即 12345)并生成 150 个点来获得前半部分,但是如何生成接下来的 150 个点,使它们与原始序列中生成的 151-300 个点相同?我必须提供什么种子,有没有办法计算种子值?
我可以简单地通过使用相同的种子即 12345 并生成 150 个点来获得前半部分,但是我如何生成接下来的 150 个点,以便它们与原始序列中生成的 151-300 个点相同? 我必须提供什么种子,有没有办法计算种子值?
我认为你做不到。最好的选择是为每个并行部分使用不同的种子:在一台机器上使用一个种子生成 150 个点,在第二台机器上使用不同的种子生成 150 个点。
警告:请勿对不同的平行部分使用相同的种子!这样做会重复另一台机器完成的工作,并且结果的随机性会降低。
您可以更改顺序程序以在 150 个生成点后更改种子。这样,您就可以实现顺序程序和并行程序之间的可重复性。