这是否模拟一维随机游走?
Does this simulate 1D random walk?
刚开始使用 python,请耐心等待我提出一些愚蠢的问题。试图弄清楚下面的代码是否真的模拟了一维随机行走运动。各个随机步骤的 +/- 1 似乎没有在结果中加起来。
结果:
positions: [0, 1, 2, 3, 4, 3]
rr = [0.38965102 0.88157087 0.60033975 0.84260495 0.44094328] # values to determine if positions should get +/-1
使用此代码:
import numpy as np
import matplotlib.pyplot as plt
steps = 10
positions = [2]
for i in range(steps):
rr = np.random.random(steps)
if rr[i] > 0.5:
positions.append(positions[i] + 1)
elif rr[i] < 0.5:
positions.append(positions[i] - 1
print(positions)
print(rr)
plt.plot(positions)
plt.show()
我相信答案是肯定的。它确实模拟了 + / - 1
随机游走。可能不是使用 numpy 执行此操作的最有效方法,但它确实有效。以下是 10,000 步的几个图表:
而且,这里有一种不同的方法可以以更 'numpy-wise' 的方式实现同样的事情。
steps = np.random.choice([-1, 1], 1000)
positions = np.cumsum(steps)
plt.plot(positions)
plt.show()
刚开始使用 python,请耐心等待我提出一些愚蠢的问题。试图弄清楚下面的代码是否真的模拟了一维随机行走运动。各个随机步骤的 +/- 1 似乎没有在结果中加起来。
结果:
positions: [0, 1, 2, 3, 4, 3]
rr = [0.38965102 0.88157087 0.60033975 0.84260495 0.44094328] # values to determine if positions should get +/-1
使用此代码:
import numpy as np
import matplotlib.pyplot as plt
steps = 10
positions = [2]
for i in range(steps):
rr = np.random.random(steps)
if rr[i] > 0.5:
positions.append(positions[i] + 1)
elif rr[i] < 0.5:
positions.append(positions[i] - 1
print(positions)
print(rr)
plt.plot(positions)
plt.show()
我相信答案是肯定的。它确实模拟了 + / - 1
随机游走。可能不是使用 numpy 执行此操作的最有效方法,但它确实有效。以下是 10,000 步的几个图表:
而且,这里有一种不同的方法可以以更 'numpy-wise' 的方式实现同样的事情。
steps = np.random.choice([-1, 1], 1000)
positions = np.cumsum(steps)
plt.plot(positions)
plt.show()