我正在为许多轨迹运行markov链,并尝试将其并行以加快运行时间。
每次我运行代码时,系统的初始状态都应该是随机的,并且转换是基于取决于当前状态的概率的,每次运行时都会导致不同的最终结果,这就是我运行它时发生的情况不平行。
我尝试使用种子将结果随机化,但没有成功。我知道输入函数的参数与调用函数分开是导致重复的原因,但我一直在努力寻找解决方法。
s = 50
result004 = pool.apply_async(long_runs,(1,10,0.4,s,s,5,1,None,'Gamma'))
result008 = pool.apply_async(long_runs,(1,10,0.4,s,s,5,1,None,'Gamma'))
result01 = pool.apply_async(long_runs,(1,10,0.4,s,s,5,1,None,'Gamma'))
result02 = pool.apply_async(long_runs,(1,10,0.4,s,s,5,1,None,'Gamma'))
answer1 = result004.get()
answer2 = result008.get()
answer3 = result01.get()
answer4 = result02.get()
产生四个相同的输出:
([[6],[1],[3],[0、0、4、0、0、2、2、0、0、0],[0、0.6、0.6、0.8, 0.4、0.8、0.6、0.6、0.4、0.6],...
([[6],[1],[3],[0、0、4、0、0、2、2、0、0、0],[0、0.6、0.6、0.8, 0.4、0.8、0.6、0.6、0.4、0.6],...
([[6],[1],[3],[0、0、4、0、0、2、2、0、0、0],[0、0.6、0.6、0.8, 0.4、0.8、0.6、0.6、0.4、0.6],...
([[6],[1],[3],[0、0、4、0、0、2、2、0、0、0],[0、0.6、0.6、0.8, 0.4、0.8、0.6、0.6、0.4、0.6],...