Plotly = require("https://cdn.plot.ly/plotly-2.27.0.min.js")
// 定義手牌類型及其組合數量
handTypes = [
{ type: "Full House", count: 3744 },
{ type: "Flush", count: 5148 },
{ type: "Straight", count: 10240 },
{ type: "Three of a Kind", count: 54912 },
{ type: "Two Pairs", count: 123552 },
{ type: "One Pair", count: 1098240 },
{ type: "High Card", count: 1302540 }
];
// 繪製直方圖
{
const div = DOM.element('div');
const totalCombos = 2598960;
Plotly.newPlot(div, [{
type: 'bar',
x: handTypes.map(d => d.type),
y: handTypes.map(d => (d.count / totalCombos * 100)),
marker: { color: '#69b3a2' },
text: handTypes.map(d => `${(d.count / totalCombos * 100).toFixed(3)}%`),
textposition: 'auto'
}], {
yaxis: {
title: 'Probability (%)',
type: 'log',
gridcolor: '#e5e5e5'
},
xaxis: {
title: 'Hand Type'
},
margin: { t: 30, b: 80, l: 80, r: 30 },
plot_bgcolor: '#ffffff',
paper_bgcolor: '#ffffff'
}, {
staticPlot: true
});
return div;
}Poker Lesson 3 - hands 組合數
Poker
今天我們來算一下 同花順、四條、葫蘆、同花、順子、三條、兩對、一對、散牌 在撲克中出現的機率。

同花順 (straight flush) 的方法數: 在一副標準的 52 張撲克牌中,有 4 種花色,每種花色有 13 張牌。同花順是指五張連續數字且同花色的牌。首先,我們可以有 10 種不同的同花順組合(A-5, 2-6, …, 10-A)。 每種花色有 1 種組合,所以同花順的組合數量為: \[ 4 \times 10 = 40 \]
四條 (four of a kind) 的方法數: 要組成四條,我們需要從 13 個數字中選擇 1 個數字來組成四張牌,然後從剩下的 12 個數字中選擇 1 個數字來組成單張牌。每個數字的四張牌有 \(\binom{4}{4} = 1\) 種組合,而單張牌有 4 種組合。所以四條的組合數量為: \[ 13 \times 1 \times 12 \times 4 = 624 \]
葫蘆 (full house) 的方法數: 葫蘆是指三張同數字的牌加上兩張同數字的牌。首先,我們從 13 個數字中選擇一個數字來組成三張牌,然後從剩下的 12 個數字中選擇一個數字來組成兩張牌。每個數字的三張牌有 \(\binom{4}{3} = 4\) 種組合,而兩張牌有 \(\binom{4}{2} = 6\) 種組合。所以葫蘆的組合數量為: \[ 13 \times 4 \times 12 \times 6 = 3744 \]
同花 (flush) 的方法數: 要組成同花,我們需要從同一花色中選出 5 張牌。但要扣掉同花順。所以,同花的組合數量為: \[ 4 \times \binom{13}{5} - 40 = 4 \times 1287 - 40 = 5108 \]
順子 (straight) 的方法數: 順子是指五張連續數字的牌,不考慮花色。在 13 個數字中(A, 2, 3, …, 10, J, Q, K),我們可以有 10 種不同的順子組合(A-5, 2-6, …, 10-A)。每張牌可以有 4 種花色,一樣要扣掉同花順。所以順子的組合數量為: \[ 10 \times 4^5 - 40 = 10 \times 1024 - 40 = 10200 \]
三條 (three of a kind) 的方法數: 要組成三條,我們需要從 13 個數字中選擇 1 個數字來組成三張牌,然後從剩下的 12 個數字中選擇 2 個數字來組成單張牌。每個數字的三張牌有 \(\binom{4}{3} = 4\) 種組合,而單張牌有 4 種組合。所以三條的組合數量為: \[ 13 \times 4 \times \binom{12}{2} \times 4^2 = 13 \times 4 \times 66 \times 16 = 54912 \]
兩對 (two pairs) 的方法數: 要組成兩對,我們需要從 13 個數字中選擇 2 個數字來組成兩對,然後從剩下的 11 個數字中選擇 1 個數字來組成單張牌。每個數字的兩張牌有 \(\binom{4}{2} = 6\) 種組合,而單張牌有 4 種組合。所以兩對的組合數量為: \[ \binom{13}{2} \times 6^2 \times 11 \times 4 = 78 \times 36 \times 44 = 123552 \]
一對 (one pair) 的方法數: 要組成一對,我們需要從 13 個數字中選擇 1 個數字來組成一對,然後從剩下的 12 個數字中選擇 3 個數字來組成單張牌。每個數字的兩張牌有 \(\binom{4}{2} = 6\) 種組合,而單張牌有 4 種組合。所以一對的組合數量為: \[ 13 \times 6 \times \binom{12}{3} \times 4^3 = 13 \times 6 \times 220 \times 64 = 1098240 \]
散牌 (high card) 的方法數: 散牌是指沒有任何組合的牌。我們需要從 13 個數字中選擇 5 個數字來組成散牌,然後從每個數字中選擇 1 張牌。每張牌有 4 種組合。但是要扣掉可能是順子和同花的組合數量。所以散牌的組合數量為: \[ \binom{13}{5} \times 4^5 - 10200 - 5108 - 40 = 1287 \times 1024 - 10200 - 5108 - 40 = 1302540 \]
檢查一下所有手牌組合數量的總和是否等於 52 張牌中選 5 張的總組合數: \[ \binom{52}{5} = 2598960 \]
而各手牌組合數量總和為: \[ 40 + 624 + 3744 + 5108 + 10200 + 54912 + 123552 + 1098240 + 1302540 = 2598960 \] 符合預期!
直方圖:
Texas Hold’em
但在德州撲克中,假設跟到第五張,我們是從七張牌中選五張來組成最好的手牌。所以我們可以計算從七張牌中組成各種手牌的組合數量。
首先,我們必須確立樣本空間的總數。在德州撲克中,玩家最終會有 7 張牌(2 張手牌 + 5 張公牌),我們需要從這 52 張牌中選出 7 張,總組合數為:
\[ \binom{52}{7} = 133,784,560 \] 這個數字比 5 張牌的 260 萬大了約 50 倍,計算過程中會出現許多「重疊」的情況(例如手上有 6 張同花色的牌,或者同時擁有兩對和三條),我們必須確保只計算該手牌能組成的最佳牌型。
同花順 (Straight Flush) 的方法數: 這包含了皇家同花順。在 7 張牌中要湊出同花順,意味著這 7 張牌中至少包含了 5 張連續且同花色的牌。 這需要考慮 7 張牌剛好構成 5 張、6 張或 7 張連續同花的情況。經過排容原理計算後,共有: \[41,584 \]機率約為 \(0.03\%\)。
四條 (Four of a Kind) 的方法數: 這比較好算。我們需要從 13 個數字選 1 個做為四條(\(\binom{13}{1}\)),這四張牌全拿(\(\binom{4}{4}\))。剩下的 3 張牌可以從剩餘的 48 張牌中任意選擇(\(\binom{48}{3}\))。 注意:即便剩下的 3 張牌湊成一對甚至三條,因為四條是大牌,最佳手牌依然是四條,所以不用扣除。 \[ 13 \times 1 \times \binom{48}{3} = 13 \times 17,296 = 224,848 \]
葫蘆 (Full House) 的方法數: 這是 7 張牌中最容易算錯的部分。因為在 7 張牌中,你可能拿到「三條+三條」(取大的三條配小的一對算葫蘆)、「三條+兩對」、「三條+一對」。 經過詳細分類計算(此處省略繁瑣的排容過程),總共有: \[ 3,473,184 \]
同花 (Flush) 的方法數: 我們需要 7 張牌中至少有 5 張同一花色,且不包含同花順。 算法是:選 1 種花色,然後從該花色 13 張選 7 張、選 6 張配 1 張雜牌、或選 5 張配 2 張雜牌。最後減去同花順的數量。 組合數為:
\[ 4 \times [\binom{13}{7} + \binom{13}{6}\binom{39}{1} + \binom{13}{5}\binom{39}{2}] - 41,584 = 4,047,644 \]
在德州撲克中,葫蘆機率 依然小於 同花機率,並沒有反轉!
P.S. 在短牌撲克(Short Deck Poker)中,由於去掉了 2-5,共 36 張牌,葫蘆反而變得比同花更容易出現(反轉!),這是因為牌數減少後,同花的組合數下降幅度較大所致。所以在短牌規則中通常是「同花 > 葫蘆」。
順子 (Straight) 的方法數: 類似同花,需找出 5、6 或 7 張連續數字,扣除同花順。 總數為: \[6,180,020 \]
三條 (Three of a Kind) 的方法數: 指 7 張牌中包含三張同號,但剩下的 4 張牌不能形成另外的三條或一對(否則會變成葫蘆或四條),也不能形成順子或同花。 總數為: \[ 6,461,620 \]
兩對 (Two Pairs) 的方法數:
這在德州撲克中非常常見。你可以拿到 3 對(取最大的兩對),或者 2 對配 3 張散牌。 總數為: \[31,433,400 \]
一對 (One Pair) 的方法數: 總數為: \[58,627,800 \]
這意味著在 Showdown 階段,你有接近 44% 的機率至少持有一對。
散牌 (High Card) 的方法數: 什麼都沒湊成,連一對都沒有。 總數為: \[ 23,294,460 \]
有趣的是,在 7 張牌選 5 的規則下,拿散牌的機率比拿一對還要低(散牌約 17.4%,一對約 43.8%)。這解釋了為什麼在德州撲克中,光靠一張「A High」通常很難贏到底。
德州撲克手牌分佈直方圖:
我們將上述 7 選 5 的數據更新到圖表中,你會發現分佈趨勢與標準 5 張牌撲克有所不同,特別是葫蘆與同花的順序對調,以及散牌數量的驟降。
總結與洞察
| Card Type | 5-Card Prob | 7-Card Prob |
|---|---|---|
| Four of a Kind | 0.0240 % | 0.168 % |
| Full House | 0.1441 % | 2.60 % |
| Flush | 0.1965 % | 3.03 % |
| Straight | 0.3925 % | 4.62 % |
| Three of a Kind | 2.1128 % | 4.83 % |
| Two Pairs | 4.7539 % | 23.50 % |
| One Pair | 42.2569 % | 43.82 % |
| High Card | 50.1177 % | 17.41 % |
對比 5 張牌與 7 張牌的機率,我們可以得到幾個對實戰有幫助的結論:
- 散牌大幅減少:在 5 張牌中,散牌佔了 50%;但在 7 張牌中,散牌只佔 17%。這意味著在河牌圈(River),對手大概率是有牌的(至少有一對)。
- 高頻手牌:一對和兩對在 7 張牌中非常常見,分別佔了約 44% 和 23.5%。這表示在實戰中,持有至少一對的機率非常高,這也影響了下注策略和讀牌判斷。
- 葫蘆與同花機率大幅上升:從傳統撲克轉到德州撲克,最大的直覺衝擊在於牌型差距的縮小。在傳統撲克中,拿三條比拿葫蘆容易 15 倍,但在德州撲克中,這個差距縮小到了不到 2 倍。這意味著:在德州撲克中,當你拿到三條或順子時,撞上對手拿到同花或葫蘆的機率,比你想像中高得多。我們可以把大牌分成兩組來記:
- 常見強牌組 (約 5%):三條 與 順子。這兩者出現頻率很高,是底池主要競爭者。
- 稀有魔王組 (約 3%):同花 與 葫蘆。雖然只比上面少一點,但在機率上這意味著它們通常能贏過上面的牌。