gpt4 book ai didi

python - 如何分别绘制重复循环的结果?

转载 作者:行者123 更新时间:2023-12-01 08:33:26 27 4
gpt4 key购买 nike

我有一维随机游走的代码,我需要运行 20 次并将结果绘制在一张图中。该代码在 1 次步行中可以正常工作,但我无法弄清楚如何在多次步行中执行此操作。

我尝试过 while 循环和 for 循环,由于某种原因,它会迭代循环并添加结果,而不是返回到开头并重新开始。因此,如果我有 100 步,并且想要步行 20 次,它会绘制一次 20*100=2000 步的步行,而不是 20 次 100 步的步行。
这是我的代码:

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()

最佳答案

位置需要在每次行走之前通过将其移动到外循环中来重置。

此外,我假设每次步行只应绘制一次,因此对 plt.plot(...) 的调用也应进入外循环(在步行之后)。

import random
import matplotlib.pyplot as plt
import numpy as np

p=0.5
q=1-p
prob=[p,q]

N=100
n=20

start = 0
#positions = [start] # <- move this
no_of_walks=list(range(0,n+1)) # |
# |
for n in no_of_walks: # v
positions = [start] # <- here
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
positions.append(positions[-1] - right + left)
plt.plot(positions) # <- and move this out of the walk

plt.show()

关于python - 如何分别绘制重复循环的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53832670/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com