M3.0 12 分鐘閱讀 2026年9月

M3.0 醉漢一小時後在哪:Random Walk 到 Brownian Motion

本篇重用M1.0兩台體重計:Gaussian 的線性組合

一條長街,一個喝醉的人

深夜,一條筆直的長街。一個喝醉的人站在路燈下,每一秒鐘隨機往左或往右踏一步,一步一公尺,左右各半、跟上一步完全無關。一小時後,他大概離路燈多遠?

先用直覺回答,並寫下你有多確定、依據是什麼。常見的答案分兩派。一派說「一小時 3600 步,左右抵消,所以大概就在路燈附近,幾公尺內」;另一派說「總會偏向一邊,可能走了幾百公尺」。兩派都說不出自己為什麼對——而正確答案(大約 60 公尺)夾在兩派中間,而且有一個乾淨的規律:距離隨時間的平方根長。為什麼是平方根?這個規律什麼時候會失效?

課堂提問Q1

翻成數學。「每秒隨機一步」是什麼隨機變數?「一小時後的位置」是什麼?「大概離多遠」該用哪個量來衡量——為什麼不能直接算「平均位置」?

先想一想,再展開看整理後的答案

課堂上第一個答案通常是「算平均位置」,然後發現平均位置是 0(左右對稱),這顯然不是「大概多遠」的意思——他不會一直站在路燈下。

寫清楚:第 ii 秒的那一步是隨機變數 ξi{1,+1}\xi_i\in\{-1,+1\},各半機率,且 ξ1,ξ2,\xi_1,\xi_2,\dots 彼此 independent(互不影響)。一小時後的位置是

Sn=ξ1+ξ2++ξn,n=3600.S_n=\xi_1+\xi_2+\cdots+\xi_n,\qquad n=3600 .

SnS_n 是隨機變數,這個過程叫 random walk(隨機漫步)。「大概多遠」問的不是 E[Sn]\mathbb E[S_n](它是 0),而是 SnS_n散開程度:最方便的量是 variance Var(Sn)=E[Sn2]\mathrm{Var}(S_n)=\mathbb E[S_n^2],它的平方根 E[Sn2]\sqrt{\mathbb E[S_n^2]}——均方根距離——才是「典型的離家距離」。

所以問題變成:Var(Sn)\mathrm{Var}(S_n) 怎麼隨 nn 長?

先看畫面:抵消的不是距離,是方向

想像把一小時的 3600 步分成兩段,各 1800 步。第一段走完他在某處,第二段從那裡重新開始。第二段有一半機率往回走、一半機率繼續往外——所以第二段平均而言既不把他帶遠、也不把他帶回。兩段合起來的距離,不是兩段距離相加(那是「一直往同一邊」才會有的事),也不是互相抵消(那是「第二段剛好反向」才會有的事),而是介於中間:像直角三角形的兩條邊,合起來的長度是平方和再開根號

nn 段這樣「互相垂直」的小位移疊起來,總長度是 n\sqrt{n} 倍的單步長度。3600 步的平方根是 60——這就是 60 公尺的來源。

寫成數學:variance 相加、極限、h\sqrt h

定理。ξ1,,ξn\xi_1,\dots,\xi_n independent、E[ξi]=0\mathbb E[\xi_i]=0Var(ξi)=σ2\mathrm{Var}(\xi_i)=\sigma^2,則 E[Sn]=0\mathbb E[S_n]=0Var(Sn)=nσ2\mathrm{Var}(S_n)=n\sigma^2

證明(五行)。展開平方:

E[Sn2]=E[iξi2+ijξiξj]=iE[ξi2]+ijE[ξi]E[ξj]=nσ2+0.\mathbb E[S_n^2]=\mathbb E\Big[\sum_i\xi_i^2+\sum_{i\ne j}\xi_i\xi_j\Big]=\sum_i\mathbb E[\xi_i^2]+\sum_{i\ne j}\mathbb E[\xi_i]\,\mathbb E[\xi_j]=n\sigma^2+0 .

第二個等號用了 independence:E[ξiξj]=E[ξi]E[ξj]\mathbb E[\xi_i\xi_j]=\mathbb E[\xi_i]\mathbb E[\xi_j];第三個等號用了 E[ξi]=0\mathbb E[\xi_i]=0交叉項全部消失——這就是「垂直的邊」的代數版本。\square

所以均方根距離是 σn\sigma\sqrt n;醉漢 σ=1\sigma=1n=3600n=3600,得 60 公尺。再加一個結論(中央極限定理,M1.0 那類 Gaussian 的加法):Sn/nS_n/\sqrt n 的分佈在 nn 大時趨近 N(0,σ2)\mathcal N(0,\sigma^2),不論單步的分佈是什麼,只要有限 variance。

取極限:Brownian motion。 現在把時間切細。每 hh 秒走一步,走到時刻 tt 需要 t/ht/h 步。若步長維持 δ\deltaVar=δ2t/h\mathrm{Var}=\delta^2 t/h;要讓 h0h\to0 時位置不退化(既不停在原地、也不爆到無限遠),必須讓 δ2/h\delta^2/h 維持常數——步長必須是 h\sqrt h 的尺度δ=h\delta=\sqrt h。這樣極限下的過程 WtW_t 有三個性質:

  1. W0=0W_0=0WtN(0,t)W_t\sim\mathcal N(0,t)
  2. 增量獨立且平穩:對 s<ts<tWtWsN(0,ts)W_t-W_s\sim\mathcal N(0,t-s),且與 WsW_s 之前的一切 independent;
  3. 軌跡 continuous。

這個極限叫 Brownian motion(或 Wiener process)[3]。性質 2 用一句話說就是:時間 hh 內的位移是一個 hε\sqrt h\,\varepsilonεN(0,1)\varepsilon\sim\mathcal N(0,1) 這句話是下一篇模擬 SDE 的全部依據。

展開細節為什麼步長取 h 會讓一切消失、取常數會爆掉

步長 δ、步頻 1/h,走到時刻 t 的 variance 是 δ²·(t/h)。

  • δ = h(步長與時間同尺度,像等速前進):variance = h·t → 0。極限是靜止不動——「隨機成分」在細分之下蒸發了。這也是為什麼把噪聲寫成「每步加 h·ε」是錯的。
  • δ = 常數:variance = δ²t/h → ∞。爆掉。
  • δ = √h:variance = t,有限且非零,且不依賴 h。只有這個尺度能活到極限。 順帶一提,√h 尺度意味著 Brownian motion 的軌跡處處連續但處處不可微:位移 √h 除以時間 h 是 1/√h → ∞。「速度」不存在,所以下一篇的 SDE 不能寫成 ẋ = …,只能寫成增量的形式 dx = …。

回到長街:兩派都錯,錯在同一個地方

「幾公尺內」那一派隱含的假設是「左右抵消得很乾淨」——那是期望值的行為,不是典型值的行為;期望值是 0,但典型偏差是 60。「幾百公尺」那一派隱含的假設是「會偏向一邊」——那要求步伐相關(走了一步左就更可能再走左),與題目的獨立假設矛盾。

理論的判斷是:獨立、有限 variance 的步伐,典型距離是 σn\sigma\sqrt n,分佈接近 Gaussian。它依賴的假設就這兩個。而它們正是現實中會被違反的地方:真實的醉漢傾向沿著剛才的方向繼續走(步伐相關),這不會破壞 n\sqrt n,但會把係數放大——相鄰兩步相關係數 ρ\rho 時,大 nnVar(Sn)nσ21+ρ1ρ\mathrm{Var}(S_n)\approx n\sigma^2\tfrac{1+\rho}{1-\rho}ρ=0.5\rho=0.560310460\sqrt3\approx104 公尺,ρ=0.9\rho=0.9 給約 260 公尺(推導見展開框)。若步長是重尾的(偶爾一步跳很遠,variance 無限),連 n\sqrt n 都會被打破,距離長得更快。

展開細節相關步伐的 variance(AR(1) 型的 ±1 步)

令每步以機率 (1+ρ)/2 與上一步同向、否則反向,則 E[ξᵢξᵢ₊ₖ] = ρ^k。 Var(Sₙ) = Σᵢ E[ξᵢ²] + 2Σᵢ<ⱼ E[ξᵢξⱼ] = n + 2Σₖ₌₁ⁿ⁻¹ (n−k)ρ^k ≈ n[1 + 2ρ/(1−ρ)] = n(1+ρ)/(1−ρ)(大 n 時)。 ρ = 0 回到 n;ρ → 1(永遠同向)時因子發散,對應 Var ~ n² 的「等速前進」;ρ < 0(傾向折返)因子小於 1,走得比獨立更近。指數仍是 √n,改變的只是常數——除非 ρ 本身隨 n 趨近 1。

回到長街:模擬一次,再把假設弄壞

import numpy as np
rng = np.random.default_rng(0)
def walk(n=3600, rho=0.0, trials=5000):
    keep = rng.random((trials, n)) < (1+rho)/2       # 這一步是否沿用上一步的方向
    flips = np.where(keep, 1, -1); flips[:, 0] = 1
    steps = rng.choice([-1, 1], trials)[:, None] * np.cumprod(flips, axis=1)
    return np.sqrt(np.mean(steps.sum(axis=1)**2))       # 均方根距離
for rho in [0.0, 0.5, 0.9]:
    print(rho, round(walk(rho=rho)), round(60*np.sqrt((1+rho)/(1-rho))))
# 0.0: 60 對 60;0.5: 103 對 104;0.9: 257 對 262(模擬值隨種子略有變動)

獨立時模擬與 3600=60\sqrt{3600}=60 吻合;加入相關,均方根距離按 (1+ρ)/(1ρ)\sqrt{(1+\rho)/(1-\rho)} 放大,理論預測與模擬一致——而且指數仍是 12\tfrac12(把 nn 改成 14400 再跑,距離變兩倍)。最後把步長換成重尾分佈(例如 Cauchy),均方根距離會隨 trials 增加而不收斂:這時 variance 不存在,n\sqrt n 規律與 Gaussian 極限都失效。

先消化一下

想一想

一個投資組合每天的報酬率獨立、期望為零、標準差 1%。一年(250 個交易日)後總報酬的典型波動大約是:

想一想

若醉漢每一步都強烈傾向沿著上一步的方向(相鄰步相關 ρ=0.9\rho=0.9),一小時後的典型距離:

想一想

用電腦模擬 Brownian motion,每步時間 h=0.001h=0.001。每步該加的隨機位移是:

參考文獻

  1. Grimmett, G., Stirzaker, D. Probability and Random Processes. Oxford University Press, 3rd ed., 2001.(第 3 章 random walk;第 13 章 Brownian motion 的定義與性質。)
  2. Feller, W. An Introduction to Probability Theory and Its Applications, Vol. 1. Wiley, 3rd ed., 1968.(第 III 章:簡單 random walk 的組合與極限。)
  3. Mörters, P., Peres, Y. Brownian Motion. Cambridge University Press, 2010.(第 1 章:Brownian motion 的存在、增量獨立、軌跡連續但不可微。)
  4. Einstein, A. Über die von der molekularkinetischen Theorie der Wärme geforderte Bewegung von in ruhenden Flüssigkeiten suspendierten Teilchen. Annalen der Physik 17, 1905.(歷史出處:懸浮粒子的均方位移與時間成正比。)