【发布时间】:2018-12-18 12:07:07
【问题描述】:
我有一个一维随机游走的代码,我需要运行 20 次并将结果绘制在一张图中。该代码适用于 1 次步行,但我无法弄清楚如何进行多次步行。
我尝试了一个 while 循环和一个 for 循环,由于某种原因,它遍历循环并 添加结果,而不是回到开头并重新开始。因此,如果我有 100 步并且想要步行 20 次,它会绘制 20*100=2000 步的步行,而不是 100 步的 20 次步行。
这是我的代码:
import random
import matplotlib.pyplot as plt
import numpy as np
p=0.5
q=1-p
prob=[p,q]
N=100 #number of steps
n=20 #number of walks
start = 0
positions = [start]
no_of_walks=list(range(0,n+1)) #since its a half open half closed interval
for n in no_of_walks:
for i in range(0, N):
rr = random.random()
right = rr < prob[0] and positions[-1] > -N
left = rr > prob[1] and positions[-1] < N #length to be walked over
positions.append(positions[-1] - right + left)
plt.plot(positions)
plt.show()
【问题讨论】:
-
您是否考虑过在每次步行前重置
positions? -
啊,这是一个很好的提示!我现在通过简单地将它移动到第一个 for 循环中来尝试它。
标签: python for-loop matplotlib plot