我试图解决这个问题,我们有一个大小为 100 的一维晶格,粒子可以从晶格中的任何位置开始并在其上随机移动(移动到任一方向的概率相等)。当粒子到达晶格的任一端时,它就会停止。问题是绘制时间平均值(到达边界)与粒子的初始起始位置,对于每个起始位置,我们采用 10000 条轨迹来计算时间平均值。
这是我的代码
for i in range(1,size):
timearr=[]
for j in range(trails):
time=0
x=i
while True:
r = random.randint(-1,1)
time+=1
x+=r
if x==0 or x==size:
timearr.append(time)
break
timemean.append(np.mean(timearr))
xarr= np.arange(1,size)
plt.plot(xarr, timemean)
plt.show()
但是,将大小设为 100 并将试验设为 10000(甚至 1000),运行它需要大量时间。有什么方法可以使用 Python 更快地解决这个问题。理想情况下,我想使用 numpy 数组的矢量化方法来做到这一点。但我想不出在这种情况下如何实现控制流。