第 44 課把一個河牌節點的下注尺度從五個砍到兩個,損失 0.334% 底池;今天把同一個問題搬到翻牌前:求解器給的是 169 種起手牌各一個頻率,人腦記得住的卻只有幾句話,從前者到後者要砍掉什麼、砍掉的代價有多大,而且該拿哪一把尺去排序。結論先講:在下面這個可以完整求解的 10 個大盲、單挑「小盲全下或棄、大盲跟或棄」的模型裡,均衡的小盲全下範圍是 772.5 個組合(58.26%),可以壓成五句規則(778 個組合),最壞情況損失只有每 100 手 0.11 個大盲;但如果改成「照對隨機牌的勝率由高排到低、取前 58%」,損失是每 100 手 1.15 個大盲,約十倍。 差別不在於記得多還是少,在於排序用的是對手「會跟的範圍」,不是隨機牌。這裡所有數字是我自己寫程式對自擬模型實算的,屬紙上推演與教學示意,不是任何求解器軟體的輸出;台灣沒有合法的現金撲克賭場,內容定位是機率與決策訓練,不構成任何下注建議。

📖 學

一、先把「記得住」量化

一張翻牌前的圖有 169 格(13 個對子、78 個同花、78 個不同花),每格一個動作頻率。要讓它進腦袋,有三個動作:排序(把牌排成一條線)、截斷(在線上切一刀)、整形(把切口抹平成有規律的句子)。每個動作都有價錢,而價錢可以用同一把尺量:把你的圖換成簡化版之後,對手做最佳回應,你的期望值掉多少。 單位用「每手作為小盲的牌少多少個大盲」,下面換算成每 100 手。價錢小,簡化才划算。

二、示範模型與求解方法

規則:雙方有效籌碼 S 個大盲(今天用 S = 10),小盲先行動,只能全下或棄牌;大盲面對全下只能跟或棄。EV 以「發牌前」為基準:小盲棄牌是 −0.5;小盲全下、大盲棄牌,小盲 +1;雙方攤牌,小盲拿 S(2e − 1),e 是小盲的勝率(平分算一半);大盲棄牌是 −1,跟注的大盲拿 S(1 − 2e)。沒有抽水、沒有前注,只算籌碼期望值,不含錦標賽的 ICM。

求解分兩步。第一步,我用 C 寫了一個七張牌的牌型比較程式,對 169 類起手牌兩兩配對(14,196 對不同類別),每對各隨機抽具體花色與 100,000 條公共牌,得到 169 乘 169 的勝率表;勝率的標準誤約 0.16 個百分點。對照已知值:AA 對隨機牌 85.2%、KK 82.4%、AKs 67.1%、32o 32.3%、72o 34.6%,與常見數據吻合。第二步,用虛擬對局法(fictitious play)迭代 60,000 輪求均衡,每一輪雙方都對對方上一輪的平均策略做最佳回應。收斂後,雙方各自偏離均衡的最佳回應獲利都在 0.00001 個大盲以下。

結果:小盲全下 772.5 個組合,佔 1326 的 58.26%;大盲跟注 495.8 個組合,佔 37.39%;小盲的賽局值是每手 −0.045 個大盲(含「小盲位置先付 0.5」,所以大盲略占優)。網路上公開的 10 個大盲單挑圖表因是否含前注、是否含大盲前注差異很大(我這次搜尋摘要看到的小盲全下從約 50% 到 58%、大盲跟注從約 20% 到 38% 都有),我沒有逐格對照任何一份,只能說我的結果落在「無前注、純籌碼期望值」這一格的常見量級。

三、一條手算的門檻公式

小盲全下的 EV 是 (1 − p)·1 + p·S(2e − 1),p 是大盲跟注的機率,e 是被跟時對跟注範圍的勝率。和棄牌的 −0.5 比,無差異的勝率是:

e* = 0.5 − (1.5 − p) / (2Sp)。

代入 S = 10、p = 0.374:(1.5 − 0.374) ÷ (2 × 10 × 0.374) = 1.126 ÷ 7.48 = 0.1505,e* = 0.3495。對跟注範圍的勝率高於 34.95% 就該全下。大盲這一側更簡單,跟注多付 S − 1,贏得的底池是 2S,所以無差異勝率是 (S − 1) ÷ 2S:S = 10 時是 9 ÷ 20 = 45%,就是一般的底池賠率。

驗算:大盲拿 K5o 對小盲全下範圍的勝率是 45.34%(高於 45%,跟),K4o 是 44.35%(低於,棄),Q6s 是 45.00%,正好在線上,解出來是 44% 的混合頻率。混合頻率只出現在無差異的邊緣牌上,而這個模型裡小盲全下只有一手混合(43s,63%),其餘都是純粹的 0 或 1。

四、排序的尺:對隨機牌,還是對跟注範圍

下表是 7 手牌的兩種勝率,以及它們的全下邊際 m(全下 EV 減去棄牌 EV,單位大盲,對均衡的跟注範圍算):

起手牌對隨機牌勝率對大盲跟注範圍勝率被跟機率 p邊際 m
85s44.6%37.1%38.5%+0.123
K2o50.5%36.0%36.4%+0.120
76o42.3%35.9%38.6%+0.026
Q7o51.8%35.1%37.4%+0.013
43s38.6%35.9%39.2%0.000
Q6o51.0%34.8%37.5%−0.012
J7o49.7%34.6%37.8%−0.043

用 J7o 驗算一次:EV = (1 − 0.378) + 0.378 × 10 × (2 × 0.346 − 1) = 0.622 + 3.78 × (−0.308) = 0.622 − 1.164 = −0.542,減去棄牌的 −0.5,m = −0.042,與表上 −0.043 差在四捨五入。

這張表有兩個讀法。第一,對隨機牌勝率會系統性高估「帶大牌的垃圾」:Q6o 對隨機牌 51.0%,比 85s 的 44.6% 高 6 個點;但對跟注範圍,Q6o 是 34.8%,85s 是 37.1%,排序整個翻過來。原因是被跟的時候,對面的範圍裡 A、K、Q、對子很多,Q6o 的 Q 常常被壓制(dominated),同花連張的牌則靠著同花與順子的潛力在強牌面前保住勝率。第二,阻斷牌會讓同樣的勝率有不同的邊際:K2o 與 76o 的勝率只差 0.1 個點,m 卻差 0.094,因為 K2o 持有一張 K,讓大盲跟注範圍少了一些 K,p 從 38.6% 降到 36.4%,多贏了更多次「對方直接棄牌拿 1」。這就是組合數與阻斷牌那一課的實例。

實測損失:取同樣大小(774 個組合)的範圍,照對隨機牌勝率由高到低排,與均衡有 25 格不同,最佳回應損失 1.15 個大盲 / 100 手;照「對均衡跟注範圍的勝率」排,只有 3 格不同,損失 0.07 個大盲 / 100 手,是前者的十七分之一。同樣的事在大盲側也成立:大盲用「對隨機牌勝率排序、取同大小」損失 0.23 個大盲 / 100 手。排序的尺要用對手會跟(或會下注)的那個範圍,所以一張範圍表永遠是成對的:你的表由對手的表決定,反之亦然。

五、均衡的圖其實只要 20 個切口

把解出來的小盲全下範圍寫成「每個高張一條切口」的形式(同花與不同花分開):

高張同花下限不同花下限組合數
對子22 以上全收78
AA2sA2o192
KK2sK2o176
QQ2sQ7o100
JJ3sJ8o68
TT4sT8o48
995s97o40
884s87o28
774s76o24
664s無8
553s無8
443s無4

組合數的驗算:對子 13 × 6 = 78;A 是 12 個同花 × 4 加 12 個不同花 × 12 = 48 + 144 = 192;Q 是 10 × 4 + 5 × 12 = 100;加總 78 + 192 + 176 + 100 + 68 + 48 + 40 + 28 + 24 + 8 + 8 + 4 = 774。多出來的 1.5 個組合來自 43s 的混合頻率(4 × 0.63 = 2.5,取整數 4,差 1.5)。這張圖的結構是「每一列從高到低連續」:沒有任何一列是中間缺一格的,所以 169 個數字壓成 20 條切口是無損的,不是近似。

六、邊緣有多平,切口偏幾格會付多少

把 169 類牌按邊際絕對值分群(m 對均衡跟注範圍算,我的勝率誤差換成 m 約正負 0.01 個大盲):

邊際絕對值小於牌類數組合數佔全部全部翻轉後的最佳回應損失
0.013(43s、84s、T7o)201.5%不超過 0.06 個大盲 / 100 手(上一格的上限,落在誤差內)
0.0259604.5%0.06 個大盲 / 100 手
0.051813610.3%0.33 個大盲 / 100 手
0.13325219.0%1.32 個大盲 / 100 手

白話:19% 的組合落在「對錯相差不到 0.1 個大盲」的帶子裡,把它們全部翻到錯的一邊,也只損失每 100 手 1.32 個大盲。這是「範圍邊緣很平」的量化版本,也是為什麼整形(把切口抹成有規律的句子)通常划算。單手的單方損失就是 m 乘以組合數除以 1326,例如把 J7o 加進範圍:0.042 × 12 ÷ 1326 = 0.00038,每 100 手 0.038 個大盲。對手若做最佳回應,損失會比單方損失大,我算到的倍數在 1 到 2 倍之間(例如下面的五句規則卡,單方損失約 0.10,最佳回應損失 0.11)。

整個範圍放大或縮小的代價,我用「按 m 由高到低排序、整體偏離最佳大小 d 個百分點」重算:

偏離 d(百分點)−10−6−3+3+6+10
最佳回應損失(個大盲 / 100 手)1.390.450.110.240.742.03

損失大致與 d 的平方成比例,放太寬比放太緊貴約 1.5 到 2.2 倍。這是這個模型的結果,不是普遍規律,但方向和「邊緣牌的負 EV 比正 EV 陡」一致:3 個百分點以內的誤差都在 0.25 個大盲 / 100 手以下。

七、五句規則的規則卡

下面是我自己整理的卡,用兩個數字 4 與 7 當門檻,不是任何軟體或教材的現成口訣:

  1. 所有對子。
  2. 任何 A、任何 K。
  3. 任何同花 Q。
  4. 其餘同花:兩張牌都在 4 以上。
  5. 其餘不同花:兩張牌都在 7 以上。

組合數驗算:對子 78;A 與 K 共 192 + 176 = 368;Q 是 40(同花)+ 5 × 12 = 60(Q7o 以上,即 Q7o 到 QJo)= 100;J 是 J4s 到 JTs 共 7 × 4 = 28,加 J7o 到 JTo 共 4 × 12 = 48,得 76;T 是 6 × 4 + 3 × 12 = 60;9 是 5 × 4 + 2 × 12 = 44;8 是 4 × 4 + 12 = 28;7 是 74s、75s、76s 共 12;6 是 64s、65s 共 8;5 是 54s 共 4。加總 78 + 368 + 100 + 76 + 60 + 44 + 28 + 12 + 8 + 4 = 778 個組合(58.67%)。與均衡的差別:多收 J7o、T7o(各 12 個組合)與 94s(4 個),少收 J3s、53s、43s(各 4 個)與 76o(12 個),淨多 4 個組合,共 7 格不同。

下表比較幾種簡化版,損失都是對手做最佳回應的結果:

版本組合數佔比最佳回應損失(個大盲 / 100 手)
均衡的 20 條切口77458.37%0.00
五句規則卡(同花下限 4、不同花下限 7)77858.67%0.11
同花下限 3、不同花下限 781061.09%0.39
同花下限 4、不同花下限 871854.15%0.28
同花下限 5、不同花下限 869052.04%0.57
對隨機牌勝率排序取前 58.4%77458.37%1.15
只留對子、任何 A、任何 K44633.63%10.06

最後一列是反面教材:句子越短不一定越好,砍錯地方的代價可以是五句規則卡的近一百倍。 大盲側同樣可以壓縮:對子全收、任何 A、同花 K 全收加 K5o 以上、Q7s 以上、Q9o 以上、J8s 以上、JTo、T9s,共 494 個組合(37.25%),與均衡的 495.8 個組合差 1.8,損失約為零。

八、帶深度的表才是完整的表

均衡範圍會隨有效籌碼移動。我把 7、8、10、12、15 個大盲各解一次,再問「手上這張 10 個大盲的卡,用在別的深度,對手做最佳回應損失多少」:

有效籌碼(大盲)小盲全下大盲跟注10 大盲小盲卡的損失10 大盲大盲卡的損失
766.34%48.59%0.737.76
861.84%44.93%0.313.32
1058.26%37.39%00
1253.24%33.03%0.501.25
1545.71%28.46%2.555.60

單位是個大盲 / 100 手。三個讀法:一,深度差 2 個大盲以內,小盲卡的損失只有 0.3 到 0.5;差 5 個大盲(15 個大盲)就到 2.55,代表表必須標深度。二,大盲卡比小盲卡對深度敏感約 2 到 11 倍(7 個大盲時 7.76 對 0.73),因為大盲的跟注是由底池賠率 (S − 1) ÷ 2S 與對手全下範圍的寬度一起決定,兩者都隨 S 動。三,15 個大盲以上,「全下或棄」已經不是小盲的最佳行動集合,真正的求解器會有加注與跟注的選項,今天的模型只能當作範圍結構的練習,不能直接套到更深的深度。

資金與紀律的面向:這些損失都是籌碼期望值,不含 ICM。錦標賽裡的圖會因為名次獎金的凹性而更緊(見錦標賽 ICM),所以這張卡不能直接帶上錦標賽桌。任何簡化規則帶上桌之前先當驗證樣本,用小到最壞情況也不傷決策品質的注碼,銀彈建議 30 到 50 個買入起跳;研究的目的是提高決策品質,不是預測收益,不保證任何一段期間的結果。

🧠 為什麼是這樣

這套壓縮之所以無損或近乎無損,有三個機制。第一,範圍是一維排序加一刀截斷:一個牌類的全下邊際 m 隨「對跟注範圍的勝率」單調上升,所以均衡範圍在這條線上就是一個門檻,每一列從高到低連續。第二,邊緣的 m 接近零:門檻附近的牌,全下與棄牌的差只有幾百分之一個大盲,所以混合頻率只是求解器在無差異點上選了其中一種寫法,數值上沒有資訊(43s 的 63% 在我的模型裡是勝率誤差與迭代停點的產物,不是策略)。第三,損失是二階的:切口偏一格,損失與偏離量的平方成比例,所以整形得越保守,損失增加得越慢。

這個結論有幾個必須寫清楚的前提。一,模型是單挑、10 個大盲、全下或棄牌的玩具。真實的 100 個大盲翻牌前樹有多個加注尺度、三到五個位置、跟注與加注混合,許多牌在均衡裡是 30% 到 70% 的真混頻,不是邊緣的一手,那時「四捨五入成純策略」的損失不能套用今天的數字。二,勝率表是蒙地卡羅,每個類別對 100,000 條公共牌,標準誤約 0.16 個百分點;換成 m 約正負 0.01 個大盲,所以 43s、84s、T7o 三手在我的計算裡是分不出來的。三,我自己寫的求解沒有和商用軟體逐格對照,只有總量(58.26%、37.39%)與常見圖表量級一致;細到單格的邊際,以你手上的軟體為準。四,對手若不是求解器,範圍表要回到第 43 課的節點鎖定與第 37 課的剝削分級,而不是死守均衡的切口。

失效與反制也有三處。一,對手知道你卡上的切口,最佳回應就是今天算的損失,五句規則卡是每 100 手 0.11 個大盲,量級很小,但不是零;若你的實際切口比卡上的偏差 3 個百分點以上,損失開始到 0.25 以上。二,深度一變,表就過期,上面第八節的 15 個大盲小盲卡損失 2.55,是五句規則卡的 20 倍以上。三,範圍表只是「對手範圍的函數」,把對手的跟注範圍抄錯(例如拿含前注的圖去對無前注的牌局),小盲的邊緣牌排序就整個偏掉,這比「卡片寫得簡不簡」的影響大得多。站內的翻牌前範圍講的是各位置的開局範圍與結構,今天補的是「怎麼把一張解出來的範圍壓成記得住的版本,以及壓縮的價錢」。

✍️ 今日練習

紙筆與計算機,15 到 20 分鐘,不需要求解器,不必進賭場。

沿用今天的模型:單挑、小盲全下或棄、大盲跟或棄、不含前注與抽水。

  1. 照五句規則卡,自己算一次組合數:對子、A 與 K、Q、J、T、9、8、7、6、5 各列各是多少,加總是否為 778。
  2. 無差異勝率:S = 12、大盲跟注機率 p = 0.33 時,小盲全下的無差異勝率 e* = 0.5 − (1.5 − p) ÷ (2Sp) 是多少?大盲側的 (S − 1) ÷ 2S 是多少?再用 S = 15、p = 0.2846 重算,兩個數字各往哪個方向動?
  3. 邊際與損失:S = 10、p = 0.364 的一手牌,對跟注範圍的勝率是 0.360,算 m = (1 − p) + pS(2e − 1) + 0.5。再算 J7o(勝率 0.346、p = 0.378)的 m,以及把它加進範圍的單方損失(換成每 100 手的個大盲數,12 個組合)。
  4. 把卡改成「同花下限 5、不同花下限 8」,列出相對於今天的卡少收哪些牌類,為什麼比表上 0.11 的損失貴了約五倍(0.57)。
  5. 寫一張你自己的「兩個門檻」卡(任意門檻),算出組合數佔 1326 的百分比,與均衡的 58.26% 差幾個百分點;用第六節的偏離表估算損失落在哪一格。
  6. 用一句話寫出你的卡「適用的深度與前提」,並寫一個會讓它失效的情況(例如有前注、深度變了、對手是人不是求解器)。

自我檢查

  • 步驟 1:對子 78;A 與 K 192 + 176 = 368;Q 40 + 60 = 100;J 28 + 48 = 76;T 24 + 36 = 60;9 20 + 24 = 44;8 16 + 12 = 28;7 12;6 8;5 4;加總 778,佔 778 ÷ 1326 = 58.67%。
  • 步驟 2、3:S = 12 時 e* = 0.5 − 1.17 ÷ (2 × 12 × 0.33) = 0.5 − 1.17 ÷ 7.92 = 0.5 − 0.1477 = 0.3523,大盲 11 ÷ 24 = 45.83%;S = 15 時 e* = 0.5 − 1.2154 ÷ 8.538 = 0.3577,大盲 14 ÷ 30 = 46.67%,兩個數字都往上動,表示越深越要有更強的牌才夠格。步驟 3:第一手 m = 0.636 + 3.64 × (−0.28) + 0.5 = 0.636 − 1.019 + 0.5 = +0.117;J7o 的 m = 0.622 + 3.78 × (−0.308) + 0.5 = −0.042,單方損失 0.042 × 12 ÷ 1326 = 0.00038,即 0.038 個大盲 / 100 手。
  • 步驟 4、5、6:下限 5 的同花版相對今天的卡少收 J4s、T4s、94s、84s、74s、64s、54s,不同花版少收 Q7o、J7o、T7o、97o、87o,每一手都在邊緣,但整串被一起砍掉,損失被累加;我能說出自己那張卡的深度、前提與一個失效情況,而不是只有切口。

🔗 延伸

  • 翻牌前範圍——各位置的開局範圍與結構,今天的規則卡可以和它的位置範圍對照。
  • 組合數與阻斷牌——今天 K2o 與 76o 的邊際差就是阻斷牌讓被跟機率下降的實例。
  • 錦標賽 ICM——今天的圖是純籌碼期望值,ICM 會把範圍推緊,不能直接套用。

💬 問 AI

我在練「玩牌技術」第 45 課:翻牌前範圍建構,從解到人腦記得住的表。
 
請用下面的資料檢查我的算法(只是教學練習,不是下注建議):
- 模型:單挑、有效籌碼 S = [10] 個大盲、小盲只能全下或棄、大盲只能跟或棄、無前注無抽水,只算籌碼期望值
- 我的規則卡:[對子全收、任何 A、任何 K、任何同花 Q、其餘同花下限 4、其餘不同花下限 7]
- 我算出的:組合數 [...]、佔 1326 的 [...]%、S = [12]、p = [0.33] 時的小盲無差異勝率 e* = [...]、大盲無差異勝率 [...]
 
請依序回答:
1. 用 e* = 0.5 − (1.5 − p) / (2Sp) 與大盲的 (S − 1) / 2S,重新推導我的兩個無差異勝率,並說明為什麼 p 越小、S 越大,e* 越高。
2. 解釋為什麼「對隨機牌勝率排序」會高估 Q6o 之類的牌,而「對對手跟注範圍的勝率」才是對的排序,並說明阻斷牌如何讓 K2o 的邊際高於勝率相近的 76o。
3. 解釋「邊緣牌的邊際接近 0,所以混合頻率只是無差異點的寫法」,並指出這個說法在 100 個大盲、多加注尺度的真實翻牌前樹裡哪裡不成立。
4. 我的卡相對均衡多收哪些牌、少收哪些牌?估算單方損失 = 邊際 × 組合數 / 1326,並說明對手做最佳回應時損失為什麼更大。
5. 為什麼「大盲卡」比「小盲卡」對有效籌碼更敏感?我的卡換到 15 個大盲會失真在哪裡?
6. 列出這個模型不能直接套用的情況(前注、錦標賽 ICM、多人底池、對手是人)。
 
請標明「你算出來的」「你的假設」「你不確定的」,不要給我下注或買入建議。