跳轉到

1654 - Pascal 與 Fermat:賭注分配問題#

案件摘要#

1654 年,賭徒 de Méré 爵士帶著一個賭博難題請教 Pascal。Pascal 與 Fermat 透過書信往來,解開了「未完賽局如何公平分配賭金」之謎,意外催生了數學期望值的概念,機率論自此誕生。

前因 -- 為什麼會有這個案子#

文藝復興時期的歐洲賭風盛行,賭徒們早已累積許多經驗法則,卻沒有一套嚴格的數學工具。義大利的 Cardano 在 16 世紀曾寫過《論賭博》(Liber de Ludo Aleae),但流傳不廣。

de Méré 爵士(Antoine Gombaud, Chevalier de Méré)向 Pascal 提出兩個難題:

  1. 骰子問題:擲一顆骰子 4 次至少出現一次 6 點,與擲兩顆骰子 24 次至少出現一次雙 6,兩者獲勝機率是否相同?
  2. 賭注分配問題(problem of points):兩人賭博,約定先贏 \(n\) 局者獨得全部賭金,但比賽在中途被迫中斷時,賭金該如何分配?

第二個問題困擾了賭徒數百年。早在 1494 年,義大利數學家 Paciolo 就在《算術大全》中提出此問題,但他的解法(按已贏局數比例分配)顯然不公平——例如 1:0 領先時只分到一半,無法反映領先者的優勢。

問題定義:設 A、B 兩人實力相當(每局勝率各 \(1/2\) ),先贏 \(n=3\) 局者得賭金 \(S\) 。中斷時比數為 \(2:1\) ,如何分配 \(S\) ?

線索與推理 -- 數學式、程式、理論#

Fermat 的解法:枚舉未來所有可能#

Fermat 的想法是:假設比賽繼續進行,列出所有等可能的未來結局,再按 A 獲勝的比例分配。

比數 \(2:1\) 時,最多再賽 2 局分出勝負。Fermat 認為可以「虛擬地」把這 2 局都賽完,共有 \(2^2 = 4\) 種等可能結局:

剩餘 2 局結果 A 累積勝局 勝者
A, A 4 A
A, B 3 A
B, A 3 A
B, B 3 B

(註:先贏 3 局即停,有些組合實際不會賽完,但 Fermat 主張虛擬補完不影響公平性。)

A 在 4 種結局中贏 3 種,故 A 應得 \(\frac{3}{4}S\) ,B 得 \(\frac{1}{4}S\) 。

Pascal 的解法:遞迴期望值#

Pascal 用不同的進路:從賽局終點往回遞推。設 \(E(a,b)\) 為 A 已贏 \(a\) 局、B 已贏 \(b\) 局時 A 應得的份額,則:

\[ E(a, b) = \frac{1}{2}E(a+1, b) + \frac{1}{2}E(a, b+1) \]

邊界條件: \(E(a, n) = S\) (A 已勝), \(E(n, b) = 0\) (B 已勝)。

以 \(S=1\) 、 \(n=3\) 計算:

\[ E(2,2) = \frac{1}{2}(1) + \frac{1}{2}(0) = \frac{1}{2} \]
\[ E(2,1) = \frac{1}{2}(1) + \frac{1}{2}E(2,2) = \frac{1}{2} + \frac{1}{4} = \frac{3}{4} \]

兩種方法得到一致答案:A 得 \(\frac{3}{4}\) ,B 得 \(\frac{1}{4}\) 。

期望值概念的誕生#

Pascal 在 1654 年 7 月 29 日寫給 Fermat 的信中,把分配原則總結為「按繼續賽下去可期望獲勝的機率分配」。這正是數學期望值的雛形:

\[ E[X] = \sum_i x_i \, P(x_i) \]

Pascal 還在信中順手解決了骰子問題:

\[ P(\text{4 次內出現 6}) = 1 - \left(\frac{5}{6}\right)^4 \approx 0.5177 > 0.5 \]
\[ P(\text{24 次內出現雙 6}) = 1 - \left(\frac{35}{36}\right)^{24} \approx 0.4914 < 0.5 \]

de Méré 憑直覺以為比例 \(\frac{4}{6} = \frac{24}{36}\) 會使兩事件機率相同,數學證明了他錯了——直覺在機率面前必須讓位給計算。

Python 遞迴解法與 Monte Carlo 驗證#

from functools import lru_cache
import random

def share_a(n):
    """Pascal 遞迴:A 再需 a 局、B 再需 b 局時 A 的份額(S=1)"""
    @lru_cache(None)
    def E(a, b):
        if a == 0: return 1.0   # A 先贏 n 局
        if b == 0: return 0.0   # B 先贏 n 局
        return 0.5 * E(a-1, b) + 0.5 * E(a, b-1)
    return E

# 比數 2:1、目標 3 局 => A 再需 1 局、B 再需 2 局
E = share_a(3)
print("理論值 E(1,2) =", E(1, 2))   # 0.75

# Monte Carlo 驗證:把中斷的賽局繼續賽完 10000 次
random.seed(42)
N = 100_000
wins = 0
for _ in range(N):
    a, b = 2, 1                     # 中斷時比數
    while a < 3 and b < 3:
        if random.random() < 0.5: a += 1
        else: b += 1
    wins += (a == 3)
print("模擬值 =", wins / N)          # ≈ 0.75

結案 -- 後果與影響#

這 7 封書信(1654 年 7–10 月)被視為機率論的誕生證書。兩人的方法殊途同歸,確立了「等可能結局的計數 + 期望值」兩大支柱。Pascal 在同一時期寫下《思想錄》中著名的「帕斯卡賭注」,把期望值思維推向神學與哲學。賭注分配問題此後成為每一代機率教科書的開場案例,而「如何定義公平」的問題也埋下了後世決策理論與賽局理論的種子。

關鍵人物與文獻#

  • Blaise Pascal(1623–1662):法國數學家,《論圓錐曲線》、帕斯卡三角形的系統化者。
  • Pierre de Fermat(1601–1665):法國律師與業餘數學家,解析幾何與數論先驅。
  • Antoine Gombaud, Chevalier de Méré(1607–1684):賭徒與文人,問題的提出者。
  • 文獻:Pascal–Fermat 書信(1654),收錄於 Varignon《Divers ouvrages de mathématiques et de physique》(1693)。