3. 一维简单随机游走

一维简单随机游走是随机过程里最基础、也最值得先动手算清楚的模型。它把“每一步只走一格、方向随机”这件事抽象成一条离散时间序列,却同时包含了路径形态、首达时间、反射对称性等一批后续仿真中反复出现的概念。本节不追求一般性定理,而是通过定义、手算示例和图示,把几个关键性质落到可以复现的数值上。

定义与符号约定

设离散时刻 n = 0, 1, 2, ...,位置记为 S_n,起点 S_0 = 0。每一步增量 X_i 独立同分布,取值为 +1 或 -1,概率分别为 p 和 q = 1 - p。于是

S_n = X_1 + X_2 + ... + X_n,   X_i ∈ {+1, -1}
P(X_i = +1) = p,  P(X_i = -1) = q = 1 - p

当 p = q = 0.5 时称为对称简单随机游走。本文统一约定:向右为正方向,位置取整数,时间从 0 开始计数。这个约定在后面的首达时间和反射原理中必须保持一致,否则符号容易出错。

由独立性可直接得到两个基本量:E[S_n] = n(p - q),Var(S_n) = 4npq。对称情形下均值为 0、方差为 n,标准差按 √n 增长——这正是随机游走“扩散”特征的数学来源:位置的不确定性随时间平方根扩张,而不是线性扩张。

路径特征:奇偶性与可达位置

随机游走有一条容易被忽略但非常实用的结构性质:奇偶性约束。因为每步改变 ±1,所以 S_n 与 n 必然同奇偶。也就是说,从 0 出发,偶数时刻只能落在偶数位置,奇数时刻只能落在奇数位置。手算或写仿真校验时,这条性质是最快的自检手段:若某条路径在 n = 4 时出现在位置 3,那它一定算错了。

另一个特征是路径的“锯齿”形态。相邻两步要么同向(形成长度 2 的直线段),要么反向(形成一个折返尖峰)。因此路径在任意时刻的局部极值必然是“尖”的,不会出现平滑拐弯。这个形态特征在可视化仿真中很直观,也解释了为什么随机游走路径的视觉粗糙度不随步长细化而降低。

手算自检清单:① 检查 S_n 与 n 是否同奇偶;② 检查相邻位置差是否恰为 ±1;③ 检查 S_n 是否落在 [-n, n] 内。三条同时满足,路径才可能是合法的。

手算示例:n = 4 的全部路径

取对称情形 p = q = 0.5,从 S_0 = 0 出发走 4 步,共有 2^4 = 16 条等概率路径,每条概率 1/16。按终点位置归类:

终点 S₄路径条数概率典型路径
+411/16++++
+244/16+++-、++-+、+-++、-+++
066/16++--、+-+-、+--+、-++-、-+-+、--++
-244/16---+、--+-、-+--、+---
-411/16----

条数由组合数给出:终点为 2k - n 时,路径数为 C(n, k),其中 k 是 +1 的步数。上表验证了 1 + 4 + 6 + 4 + 1 = 16,且终点只出现在 -4、-2、0、2、4,符合奇偶性约束。这个 16 条路径的小例子是后面所有概念的“试验台”,建议手画一遍路径树。

首达时间:定义与手算

对整数 a ≠ 0,定义首达时间

T_a = min{ n ≥ 1 : S_n = a }

若永不达到则记为 ∞。注意 n 从 1 开始,因为 S_0 = 0 ≠ a。首达时间是一个随机变量,它的分布是随机游走理论中最核心的对象之一。

以 a = +1 为例手算。第一步若为 +1,则 T_1 = 1,概率 p;第一步若为 -1,则必须先回到 0 才可能到达 +1,而回到 0 之后的过程与初始状态“同分布”(强马尔可夫性),因此 T_1 = 1 + T'_0 + T''_1,其中 T'_0 是从 -1 首次回到 0 的时间,T''_1 是从 0 首次到 +1 的时间。对称情形下可解得 P(T_1 < ∞) = 1,但 E[T_1] = ∞——一维对称随机游走是零常返的,必然到达但平均等待时间发散。这个“必达但期望无穷”的结论是反直觉的,也是仿真中必须警惕的:用有限步仿真估计首达时间均值会系统性偏低。

对一般的上边界 a > 0,对称情形下有 P(T_a < ∞) = 1;非对称情形 p ≠ q 时,P(T_a < ∞) = min(1, (q/p)^a),当 p < q(向左漂移)时到达正边界的概率小于 1,存在正概率永不达到。

反射原理

反射原理是计算首达时间分布的利器。其核心思想是:对从 0 出发、在时刻 n 之前触及水平 a > 0 的路径,把首次触及 a 之后的部分关于直线 y = a 作镜像反射,得到的是一条从 2a 出发、终点被“翻折”的路径。由此得到对称情形下的经典恒等式:

P(T_a ≤ n) = P(S_n ≥ a) + P(S_n ≥ a + 1)   (对称情形,a > 0)

更常用的等价形式是 P(T_a ≤ n) = 2·P(S_n ≥ a + 1) + P(S_n = a),在 n 与 a 同奇偶时可简化为 2·P(S_n ≥ a)。以 a = 1, n = 4 验证:P(S_4 ≥ 1) = P(S_4 = 2) + P(S_4 = 4) = 4/16 + 1/16 = 5/16,故 P(T_1 ≤ 4) = 10/16。直接数路径也可验证:16 条路径中,前 4 步内从未出现 +1 的路径必须第一步为 -1 且此后不回到 +1,即路径为 ----、---+、--+-、--++、-+--、-+-+ 共 6 条,故 P(T_1 ≤ 4) = 1 - 6/16 = 10/16,与反射原理结果一致。

反射原理:首次触及 a=1 后关于 y=1 镜像 n Sₙ a=1 2a=2 0 1 2 3 4 5 0 1 2 3 -1 -2 原路径 反射后终点 首次触及 T₁=3 反射后路径终点由 Sₙ=2 变为 2a−Sₙ=0,故 P(T₁≤n) 可转化为 P(Sₙ≥a) 的计数。 本例 n=4:P(S₄≥1)=5/16,P(T₁≤4)=10/16,与逐条数路径结果一致。 对称情形下 P(Tₐ≤n)=P(Sₙ≥a)+P(Sₙ≥a+1),是首达时间分布最常用的计算入口。

把性质落到仿真校验上

理解上述性质后,可以用一个极小的仿真脚本做交叉验证。下面用 Python 生成 10 万条 4 步路径,统计终点分布与 T_1 ≤ 4 的频率,与手算值对照:

import numpy as np
rng = np.random.default_rng(20240501)
N, n = 100_000, 4
steps = rng.choice([-1, 1], size=(N, n))
paths = np.cumsum(steps, axis=1)
final = paths[:, -1]
# 终点分布
for v in [-4, -2, 0, 2, 4]:
    print(v, np.mean(final == v))
# 首达 T_1 <= 4
hit = np.any(paths == 1, axis=1)
print("P(T1<=4) =", np.mean(hit))

预期输出应接近:终点 ±4 各约 0.0625,±2 各约 0.25,0 约 0.375;P(T1<=4) 约 0.625。若结果明显偏离,优先检查随机种子、步长取值和 cumsum 的轴向,而不是怀疑理论。这里给出的数值是示例性预期,实际运行会因随机性有小幅波动。

常见误区:把 T_a 的起点写成 n = 0,导致 a = 0 时首达时间恒为 0;或在非对称情形下直接套用对称反射公式。反射原理的对称形式依赖 p = q,非对称时需改用带 (q/p) 权重的版本。

小结本节的可操作要点:先固定正方向与时间起点,用奇偶性和 ±1 步长做路径自检;用 C(n,k) 手算小规模终点分布;用反射原理把首达概率转化为终点尾概率;最后用仿真频率与手算值对照。这套“定义—手算—反射—校验”的闭环,是后续行为仿真中处理更复杂游走模型的基础。