词条 · 理论 · 核心
赌徒破产问题
每局赢面略小于一半,只要一直赌下去,输光是迟早的事。
也称:赌徒破产、Gambler's Ruin、gamblers ruin、破产问题、追平概率
一句话
一个人带着有限的钱,和一个赌本无限的对手反复对赌,每局赢的概率略小于一半。他能翻本吗?答案是一个干净得有点残酷的公式:从落后 步开始追平的概率是 ,随 指数衰减。
下面从这个人坐下来的第一局讲起。
先看一个麻烦:0.49 和 0.50 差多少
一张赌桌。规则简单到没有花样:每局押一枚筹码,赢了拿回两枚,输了没了。你赢的概率是 0.49,庄家 0.51。
这两个数字看着几乎一样。少的那 0.02,感觉像是”长期下来会慢慢磨掉一点本金”——像手续费,像磨损,是个可以忍的成本。
你带了 100 枚筹码,打算赢到 110 枚就走。100 到 110 只差 10 枚,而你的胜率只比一半低了 2%。凭直觉,这事应该八九不离十。
先说结论:概率是 0.666188。 三分之一的时候你会先输光那 100 枚。而如果这桌是绝对公平的(胜率 0.50),成功概率是 。
胜率从 0.50 掉到 0.49,成功率从 0.909091 掉到 0.666188。那 0.02 不是磨损,它把一件九成的事变成了三分之二。
更要紧的问题在后面:如果你不打算赢 10 枚就走,而是想一直赌到心满意足为止呢?
朴素尝试与失败
招数一:算期望,然后觉得可以接受。 每局的期望收益是 枚。赌一千局,期望亏 20 枚。你有 100 枚,看着撑得住。
这个算法本身没错,但它答的不是你问的问题。期望值把”平稳亏损”和”中途输光”混成了一个平均数。而输光是吸收态——一旦到 0,游戏结束,后面那些能把平均值拉回来的可能性全部作废。期望值假设你能一直赌下去,可输光的人赌不下去了。
招数二:赢一半局就行,胜率 0.49 差不多是一半。 100 局里赢 49 输 51,净亏 2 枚。听起来无所谓。但赌局的结果不是均匀铺开的:真实的轨迹会有连输 8 局的时候。轨迹会不会碰到 0,和最终净值是多少,是两个不同的问题。你关心的其实不是”亏多少”,而是”有没有一刻钱正好用光”。
招数三:输了就加倍下注,总能赢回来。 这是那个著名的马丁格尔策略:输 1 枚,下局押 2 枚;再输,押 4 枚。只要赢一次就回本。
它的算术是对的,杀死它的是有限的钱。从 1 枚开始加倍,连输 7 局就要押 128 枚,累计投入 255 枚——你只有 100 枚,第 7 局根本坐不下去。而连输 7 局的概率并不小(约 ,一百次里会遇到一次)。这一招的本质是把”很多次小赢”和”极小概率的巨亏”打包,包里的巨亏正好等于你的全部身家。
三次失败指向同一件事:决定命运的不是每局亏多少,而是”归零”这个边界存在。 一旦触到就永久出局,这让问题从算平均值变成了算触边概率。
机制:一个两行的递推,和它的解
设 是每局赢的概率、 是输的概率、(也就是从追赶者的视角看,形势不利)。要算的是 :落后 步的人,最终追平的概率。这里”追平”指某一刻差距恰好回到 0,不限次数、不限时间。
关键在一句话:下一局之后,你的处境仍然是同一类问题,只是 变了。 输一局(概率 ,从追赶者看是好事,差距缩小)就变成落后 ;赢一局(概率 )就变成落后 。于是
加上两个边界:(已经追平了),以及”落后无穷远时追平概率趋于 0”。
猜一个形式 代进去,两边除以 ,得到 。这个二次方程的两个根是 和 。 不满足”落后无穷远时趋于 0”,弃掉。剩下:
验一下 、、 的情形,把 代回递推:
左边 q_3 = (1/9)^3 = 0.0013717421
右边 q·q_2 + p·q_4 = 0.1 × (1/9)^2
+ 0.9 × (1/9)^4
= 0.1 × 0.0123456790
+ 0.9 × 0.0001524158 = 0.0013717421 ✓
从 1 到 8 的完整数值,注意它们全都是 9 的整数次方的倒数:
z │ (q/p)^z = 分数 ≈ 大约
───┼──────────────────────────────────────
1 │ 0.1111111111 = 1/9 1 / 9
2 │ 0.0123456790 = 1/81 1 / 81
3 │ 0.0013717421 = 1/729 1 / 729
4 │ 0.0001524158 = 1/6561 1 / 6,561
5 │ 0.0000169351 = 1/59049 1 / 59,049
6 │ 0.0000018817 = 1/531441 1 / 531,441
7 │ 0.0000002091 = 1/4782969 1 / 4,782,969
8 │ 0.0000000232 = 1/43046721 1 / 43,046,721
画成对数刻度的图,每落后一步,条就短掉一截固定长度——这正是指数衰减的样子:
落后步数 追平概率(每格 = ÷9)
z=1 │█████████████████████████████████ 1/9
z=2 │████████████████████████████ 1/81
z=3 │███████████████████████ 1/729
z=4 │██████████████████ 1/6.5 万
z=5 │█████████████ 1/5.9 万
z=6 │████████ 1/53 万
z=7 │███ 1/478 万
z=8 │ 1/4300 万
└──────────────────────────────────
用一次模拟对一下(每次都真的赌到追平或落后 300 步为止,Python random.seed(20260731),可复现):
z=1: 模拟 0.1115660 公式 0.1111111 (200 万次,偏差 0.4%)
z=2: 模拟 0.0123105 公式 0.0123457 (200 万次,偏差 0.3%)
z=3: 模拟 0.0014155 公式 0.0013717 (200 万次,偏差 3.2%)
z=5: 模拟 0.0000152 公式 0.0000169 (400 万次,偏差 10%)
越大偏差越难看,不是公式不准,而是这种事件太罕见:400 万次里只成功了 61 次,样本少,抖动自然大。这本身就是指数衰减的一个侧面。
现在看不同的劣势程度。 是对手(这里指追赶方)每局的胜率:
q q/p z=1 z=2 z=3 z=4 z=5 z=6
0.10 0.111111 0.111111 0.012346 0.001372 0.000152 0.000017 0.000002
0.20 0.250000 0.250000 0.062500 0.015625 0.003906 0.000977 0.000244
0.30 0.428571 0.428571 0.183673 0.078717 0.033736 0.014458 0.006196
0.40 0.666667 0.666667 0.444444 0.296296 0.197531 0.131687 0.087791
0.45 0.818182 0.818182 0.669421 0.547708 0.448125 0.366648 0.299985
0.50 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000
最后一行是全表的要害。 时 ,而 1 的任何次方都是 1:只要形势不是对你不利,落后多少都不重要,你必然追平。 不是”很可能”,是概率 1。而 从 0.5 掉到 0.45, 从 1 掉到 0.818182, 处的概率就从 1 掉到 0.299985。这条边界极陡,是整个问题里最该记住的一点。
为什么”赌本无限”让答案变成指数衰减
上面那个式子里没有”赌多少局”,也没有”追赶者有多少钱”。这不是省略,是刻意的设定:追赶者的信用无限、可以尝试无限多次、永不放弃。
这个设定听起来像是给了追赶者极大的便利,实际效果是让结论变得干净且保守。
先看它为什么让指数衰减出现。跨越一步差距是一个独立的、可重复的任务;跨越 步,就是把这个任务串起来做 次。如果尝试次数有上限,“第二步”的难度会取决于前面用掉了多少次机会,各步不再独立,就没有干净的乘法。而次数无限时,每一步的难度都完全一样, 步就是 个相同因子相乘—— 里的那个指数,正是”独立重复 次”的直接后果。
再看它为什么保守。既然追赶者永不放弃,那么这个概率算的是**“永远有一天能追上”**,不是”在合理时间内追上”。真实的追赶者会耗尽电费、耗尽耐心、耗尽机会。所以 是一个上界:真实风险只会更小。
顺带解决了另一件事:为什么这里不需要”我有 100 枚筹码”这样的参数。开头那个 100 枚赢到 110 枚的例子有两道墙(0 和 110),得用两墙公式
算出 0.666188(、、)。而当赌本无限、只关心”何时追平”时,只剩一道墙,公式退化成 。少一道墙,少一个参数。
回访:这是有偏随机游走的另一张脸
差距每局 或 ,就是一条一维随机游走的轨迹。赌徒破产问题问的是这条轨迹是否触碰 0。所以两者不是两个知识点:随机游走描述轨迹本身,赌徒破产回答那条轨迹关于边界的一个特定问题。
而 时轨迹以概率 1 漂向一侧、只在开局附近有机会折返,正是 里” 越大越没戏”的几何图像。
比特币白皮书第 11 节就是逐字用这个模型。中本聪先把诚实链与攻击链的竞争写成随机游走,然后说:
攻击者从给定劣势追上的概率,类似于赌徒破产问题。设想一个信用无限的赌徒从亏损开始,进行可能无限多次的试验以求回本。
记号对上: 是诚实节点找到下一个区块的概率、 是攻击者的、 是攻击者从落后 个区块处最终追上的概率。结论写成分段函数:
上半支就是那张表最后一行:攻击者算力一旦不低于诚实方,追上的概率是 1,不是”很可能”。这是”多数算力必须诚实”这个假设无法让步的原因——它不在工程层面,它在这个二次方程的根里。
下半支给出了”等几个确认”的量化含义。 时,等 6 个确认把追上概率压到 。每多等一个区块,风险除以 。 这是一条不能协商的曲线,也是为什么确认数从 1 加到 6 的收益远大于从 6 加到 12。
白皮书为此只引了一篇参考文献:Feller《概率论及其应用导论》(1957)。第十四章讲随机游走与赌徒破产, 的推导就在那里——中本聪直接引用,没有在文中证明。上一节那个两行的递推,就是它的来处。
边界与常见误解
“必然输光”只在赌本悬殊时成立。 常见的说法是”赌徒最终一定破产”。准确的版本是:当对手赌本无限、你的赌本有限、每局对你不利时,破产概率为 1。三个条件都要。两个有限赌本对赌时,谁先输光是概率问题,公式是上面那个两墙式子。
时结论不是”更可能追上”,是”必然”。 很多人把 读成一种近似说法。它是精确的 1,代价是可能要等极久。这条正是 51% 攻击成立的数学表述:不需要绝对多数算力,只需要不落后。
没有说要多久。 是概率,不是时间。、 时追上概率 0.299985,但达成它可能需要天文数字般多的区块。反过来说,这也是”这个上界很保守”的原因:真实攻击者有截止时间。
每局独立是硬前提。 公式建立在每局胜率恒定、结果互不影响之上。挖矿基本满足(哈希尝试互相独立)。赌桌上未必——发牌有记忆的游戏就不满足,模型不能照搬。
它不解释”手气”。 有人赢一大笔然后离场,这与公式不矛盾。 是那条轨迹是否触碰某个边界的概率,不是任何人某晚的输赢。开局附近一次幸运的窜升,恰恰是 小时概率不低的那部分——正如白皮书那句:如果他没能在早期一跃而前,随着落后加深,机会就微乎其微了。
提到这个词条的文章
- 比特币白皮书逐节拆解经典拆解 2026-07-31