「5枚の役」と「7枚から作る役」の確率を分ける
ポーカーの確率表を見るときは、何枚から役を作る数字なのかを先に確認します。この記事では、次の条件を揃えて比べます。
| 条件 | 5枚の表 | 7枚の表 |
|---|---|---|
| 山札 | ジョーカーなしの52枚 | 同じ52枚 |
| 抽出 | 重複なしで5枚 | 重複なしで7枚 |
| 交換 | なし | なし |
| 数える役 | 配られた5枚の役 | 7枚から選ぶ最善5枚の役 |
| 総組合せ | 2,598,960通り | 133,784,560通り |
いずれも、手札やボードを見る前の無条件の出現率です。相手の手札、参加人数、ベット、フォールドを条件にしていません。7枚の表はホールデムの最終的な役を考える参考になりますが、「この手札なら相手に何%で勝つか」という表ではありません。

役ごとの件数と出現確率
以下は標準のハイの順位で分類した、編集部の独立全列挙による値です。最も強い役だけを1回数えています。確率は小数第6位までの表示で丸めているため、表示値の合計に微小な差が出ます。
| 最善の役 | 5枚の件数 | 5枚の確率 | 7枚の件数 | 7枚の確率 |
|---|---|---|---|---|
| ロイヤルフラッシュ | 4 | 0.000154% | 4,324 | 0.003232% |
| ストレートフラッシュ(ロイヤルを除く) | 36 | 0.001385% | 37,260 | 0.027851% |
| フォーカード | 624 | 0.024010% | 224,848 | 0.168067% |
| フルハウス | 3,744 | 0.144058% | 3,473,184 | 2.596102% |
| フラッシュ | 5,108 | 0.196540% | 4,047,644 | 3.025494% |
| ストレート | 10,200 | 0.392465% | 6,180,020 | 4.619382% |
| スリーカード | 54,912 | 2.112845% | 6,461,620 | 4.829870% |
| ツーペア | 123,552 | 4.753902% | 31,433,400 | 23.495536% |
| ワンペア | 1,098,240 | 42.256903% | 58,627,800 | 43.822546% |
| ハイカード | 1,302,540 | 50.117739% | 23,294,460 | 17.411920% |
| 合計 | 2,598,960 | 100% | 133,784,560 | 100% |
ロイヤルフラッシュはストレートフラッシュの最上位ですが、この表では見つけやすいように別行です。ロイヤルを含むストレートフラッシュ全体なら、5枚で40通り、7枚で41,584通りとなります。
7枚に複数の役があっても、重複させない
たとえば、7枚にAが3枚、Kが3枚、2が1枚あれば、最善はA・A・A・K・Kのフルハウスです。表ではフルハウスに1回入れ、スリーカードやワンペアへ追加しません。
同様にストレートフラッシュは「ストレート」と「フラッシュ」に重ねて数えていません。「フラッシュ以上」や「フラッシュを含む組合せ」の表とは、集計条件が異なります。
組合せ数から確率を計算する
計算の基本は、その役になる件数÷全組合せ数です。パーセント表示では最後に100を掛けます。
「n枚から順番を区別せずr枚を選ぶ数」をC(n,r)と書くと、全組合せは次の式です。
C(n,r) = n! / {r! × (n-r)!}
C(52,5) = 2,598,960
C(52,7) = 133,784,560
「!」は、その整数から1までを掛ける記号です。同じ5枚でも配られた順が違うだけなら、ここでは同じ組合せとして扱います。
5枚のフルハウスを数える
3枚組のランクを13通り、そのスートを4種類から3つ選びます。ペアは別ランクなので12通り、そのスートを4種類から2つ選びます。
13 × C(4,3) × 12 × C(4,2)
= 13 × 4 × 12 × 6
= 3,744通り
3,744 ÷ 2,598,960 × 100 ≒ 0.144058%
3枚側と2枚側は役割が違うため、同じ組合せを入れ替えて二重に数えてはいません。
5枚のワンペアを数える
ペアのランクとスートを選び、残り3枚は互いに異なる別ランクから選びます。
13 × C(4,2) × C(12,3) × 4³
= 1,098,240通り
残り3枚にもペアがあるとツーペア、ペアと同じランクを含めるとスリーカード等になるため、ランクの選び方に制限を入れています。
5枚のフラッシュから、上位役を除く
同じスートの13枚から5枚を選ぶと、4×C(13,5)=5,148通りです。ただし、この中にはロイヤルを含むストレートフラッシュ40通りがあります。
4 × C(13,5) − 40 = 5,108通り
これが表の「最善の役がフラッシュ」の件数です。何を含め、何を除いた式かを揃えることが大切です。
7枚では、選べるカードが増えるため確率が変わる
7枚から5枚を選ぶ方法はC(7,5)=21通りあります。ただし、5枚の確率を21倍すれば7枚の確率になるわけではありません。同じ7枚の中で、複数の選び方が同じ役を作るからです。
たとえば7枚のフルハウスは、ランクごとの枚数が「3・2・1・1」「3・2・2」「3・3・1」の3種類に分かれます。
3・2・1・1:13×4×12×6×C(11,2)×4² = 3,294,720
3・2・2 :13×4×C(12,2)×6² = 123,552
3・3・1 :C(13,2)×4²×11×4 = 54,912
合計 3,473,184
この分類には同ランク4枚を含めないため、フォーカードを混ぜていません。5枚とn枚の確率の違いや、含有する役と最善役の定義の違いは、Wu・Wuの原著論文でも扱われています。
再計算できる全列挙コード
次のPythonコードは、52枚から順不同でn枚を選び、その最善の役の種類を1つに分類します。5枚・7枚の両方に使えます。7枚は1億件以上あるため、Pythonでそのまま実行すると時間がかかります。
from itertools import combinations
from collections import Counter
from math import comb
deck = [(rank, suit) for rank in range(2, 15) for suit in range(4)]
def straight(ranks):
ranks = set(ranks)
if 14 in ranks:
ranks.add(1) # A2345用。QKA23は連番にしない
return any(set(range(low, low + 5)) <= ranks
for low in range(1, 11))
def category(hand):
by_suit = [{r for r, s in hand if s == suit} for suit in range(4)]
for ranks in by_suit:
if {10, 11, 12, 13, 14} <= ranks:
return "royal"
if straight(ranks):
return "straight_flush"
counts = sorted(Counter(r for r, s in hand).values(), reverse=True)
if counts[0] == 4:
return "four_kind"
if counts[0] == 3 and counts[1] >= 2:
return "full_house"
if any(len(ranks) >= 5 for ranks in by_suit):
return "flush"
if straight(r for r, s in hand):
return "straight"
if counts[0] == 3:
return "three_kind"
if counts.count(2) >= 2:
return "two_pair"
if counts[0] == 2:
return "one_pair"
return "high_card"
n = 5 # 7枚の表を再計算する場合は7へ変更
totals = Counter(category(hand) for hand in combinations(deck, n))
assert sum(totals.values()) == comb(52, n)
for name, count in totals.items():
print(name, count, count / comb(52, n) * 100)
編集部の検算では、同じ分類を使う別実装で5枚・7枚を全列挙し、表の件数と合計を確認しました。コードは役の種類の集計用で、同じ役同士のキッカー比較をする対戦用判定器ではありません。
役の出現率・ドロー完成率・勝率は別の数字
| 知りたいこと | 必要な条件 | 例 |
|---|---|---|
| 役の出現率 | 山札、選ぶ枚数、最善役の集計方法 | 無条件の7枚でフルハウスは約2.60% |
| ドロー完成率 | 今見えている札、待ち札、残り枚数 | 9枚待ちをフロップからリバーまでに引く率 |
| 相手に勝つ確率 | 自分と相手の手札・レンジ、ボード、人数 | フラッシュでも相手のフルハウスに負ける |
自分の手札2枚とフロップ3枚だけが分かり、特定の待ち札が9枚残っているとします。残る2枚でその9枚を少なくとも一度引く率は、1−(38/47)×(37/46)≒34.97%です。これは、見えている札を条件にした完成率であり、表の無条件のフラッシュ出現率とは比較できません。
ドローの読み方はガット・両面・バックドア、対人の取り分は勝率とエクイティへ進めます。
また、7枚ではワンペアの方がハイカードより出やすくなりますが、標準ルールの役順位は変わりません。確率表からその場で役順位を作り直さず、標準の役一覧で勝敗を判定します。

