这是否模拟一维随机游走?

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