what-are-the-odds-of-a-royal-flush-poker

What Are the Odds of a Royal Flush? Poker Hand Probabilities, Tables, and Examples

If you can count, you can learn to think like a poker player. Poker looks like luck in the short run, but under every decision there is combinatorics, probability, and expected value (EV). In this guide you’ll compute the odds for every classic 5-card hand (pair, two pair, trips, straight, flush, full house, quads, straight flush, royal flush), understand how to translate counts into probabilities and “1 in X” odds, and use small Python snippets to verify results and run quick simulations. The goal is not to promise winnings—it’s to help you reason clearly about uncertainty at the table.

Educational note: This content is for learning statistics and decision-making. It does not guarantee profits or encourage gambling.


What You’ll Learn

  • How the 52-card deck maps to combination counts.
  • Exact 5-card probabilities and “1 in X” odds for each hand rank.
  • Step-by-step derivations (e.g., one pair, flush, full house) with KaTeX.
  • How to compare pot odds vs drawing odds with EV.
  • Quick Python snippets to verify counts and run tiny simulations.

1) The Deck, Combinations, and the Language of Probability

A standard deck has 52 cards: 13 ranks (A,2,…,K) × 4 suits (♠♥♦♣). In 5-card poker we treat hands as combinations without order. The denominator for all exact probabilities is:

\text{Total 5-card hands}=\binom{52}{5}=\frac{52!}{5!,47!}=2{,}598{,}960

All exact 5-card probabilities below divide the appropriate hand count by \binom{52}{5}.


2) Exact Odds of 5-Card Poker Hands (Counts, Probabilities, “1 in X”)

Below is the standard table of mutually exclusive hand counts and probabilities. “Odds (1 in …)” is just \dfrac{1}{p}, rounded.

Hand TypeCombinational CountProbabilityOdds (1 in …)
Royal Flush40.000154%649,740
Straight Flush (ex-Royal)360.001385%72,193
Four of a Kind6240.0240%4,165
Full House3,7440.1441%694
Flush (ex-straight flush)5,1080.1965%509
Straight (ex-straight flush)10,2000.3925%255
Three of a Kind54,9122.1128%47
Two Pair123,5524.7539%21
One Pair1,098,24042.2569%2.37
High Card (no straight/flush)1,302,54050.1177%2.0

Quick takeaways
• A royal flush is 4 out of 2,598,960 possible 5-card hands—about 1 in 649,740.
• More than 92% of all 5-card hands are “one pair” or worse; about half are just high card.


Worked Derivations (selected)

Royal Flush

You need A-K-Q-J-10 all in the same suit. There are 4 suits, so:

N_{\text{royal}}=4 \quad\Rightarrow\quad P(\text{royal})=\frac{4}{\binom{52}{5}}\approx 1.539\times 10^{-6} ,(0.000154%)

Straight Flush (excluding royal)

There are 10 rank-runs per suit (A-5 up to 10-A), minus the royal itself; across 4 suits:

N_{\text{sf (ex-royal)}}=10\cdot 4 - 4 = 36

One Pair

Choose the pair’s rank; choose its 2 suits; choose 3 distinct side ranks; choose 1 suit for each side rank:

N_{\text{one pair}}=\binom{13}{1}\binom{4}{2}\binom{12}{3}4^{3}=1{,}098{,}240 P(\text{one pair})=\frac{1{,}098{,}240}{\binom{52}{5}}\approx 0.422569 ; (42.2569%)

Full House

Pick a rank for trips and a different rank for the pair; pick suits accordingly:

N_{\text{full}}=\binom{13}{1}\binom{4}{3}\binom{12}{1}\binom{4}{2}=3{,}744

Flush (excluding straight flush)

Pick a suit (4 ways), then choose any 5 of its 13 cards (no order), subtract straight-flushes in that suit:

N_{\text{flush ex-sf}}=4\binom{13}{5}-40=5{,}108

(There are 10 straight sequences × 4 suits = 40 straight flushes total; 4 of those are royals.)


3) From Counting to Decisions: Pot Odds and EV

If an action yields outcomes x_i with probabilities p_i, the expected value is

\mathrm{EV}=\sum_i p_i x_i

A call is profitable when \mathrm{EV}>0. A quick break-even test compares your win probability to pot odds:

  • Pot odds (ratio) = \dfrac{\text{amount to call}}{\text{pot after calling}}
  • Break-even win probability p^*:

p^*=\frac{\text{amount to call}}{\text{amount to call}+\text{pot}}

Example. Pot = $90; villain bets $10; you call $10 → pot after calling = $110.
p^*=\frac{10}{110}\approx 9.09%
If your chance to improve (and still win) exceeds 9.09%, calling has positive chip EV (ignoring future streets).


4) Outs and Approximation Rules (Rule of 4 and 2)

An out is an unseen card that improves you to a likely winner.

  • One card to come (river): P(\text{hit})\approx \frac{k}{46}\approx 2k%
  • Two cards to come (turn+river): P(\text{hit})\approx 4k%

Typical outs:

  • Open-ended straight draw: k=8 → ~32% by river
  • Flush draw after flop: k=9 → ~36% by river
  • Two overcards (pair one of them by river, rough): k\approx 6 → ~24%

Exact flush by river after a 4-flush on the flop (two to come).
Miss both streets: \frac{39}{47}\cdot\frac{38}{46}\approx 0.676
So hit by river: 1-0.676=0.324 ; (32.4%) — nicely aligned with the Rule of 4 (9 outs → ~36%).


5) Python: Verify Counts, Print the Odds Table, and Simulate

5.1 Count & Print Standard Probabilities

import math

def nCk(n, k): return math.comb(n, k)
total = nCk(52, 5)

counts = {
    "royal_flush": 4,
    "straight_flush_ex_royal": 36,
    "four_of_a_kind": 624,
    "full_house": 3744,
    "flush_ex_straight_flush": 5108,
    "straight_ex_straight_flush": 10200,
    "three_of_a_kind": 54912,
    "two_pair": 123552,
    "one_pair": 1098240,
    "high_card": 1302540,
}

for hand, c in counts.items():
    p = c / total
    print(hand, c, f"{100*p:.6f}% (1 in {round(1/p):,})")

5.2 Pot-Odds & EV Helpers (rule of 4/2 baked in)

def break_even_prob_to_call(to_call, pot_before_call):
    pot_after_call = pot_before_call + to_call
    return to_call / pot_after_call

def approx_hit_prob(outs, cards_to_come=2):
    if cards_to_come == 2: return min(1.0, outs * 4 / 100)
    if cards_to_come == 1: return min(1.0, outs * 2 / 100)
    raise ValueError("cards_to_come must be 1 or 2")

def call_chip_ev(to_call, pot_before_call, win_prob):
    pot_after_call = pot_before_call + to_call
    return win_prob * pot_after_call - (1 - win_prob) * to_call

# Example: flush draw after flop (9 outs), pot $90, need to call $10
to_call, pot = 10, 90
p_be = break_even_prob_to_call(to_call, pot)
p_est = approx_hit_prob(outs=9, cards_to_come=2)
ev = call_chip_ev(to_call, pot, p_est)
print("Break-even:", round(100*p_be, 2), "%  |  Est. win prob:", round(100*p_est, 2), "%  |  EV:", round(ev, 2))

5.3 Tiny Monte Carlo (Heads-Up, very simplified)
This rough simulation evaluates your hole cards vs. a random hand, dealing 5 community cards and comparing best 5.

import random
from collections import Counter
from itertools import combinations

ranks = "23456789TJQKA"; suits = "CDHS"
deck = [r+s for r in ranks for s in suits]

def hand_rank_5(cards5):
    rs = [c[0] for c in cards5]; ss = [c[1] for c in cards5]
    is_flush = len(set(ss)) == 1
    vals = sorted([ranks.index(r) for r in rs])
    is_straight = all(vals[i]+1 == vals[i+1] for i in range(4)) or vals == [0,1,2,3,12]
    cnt = Counter(rs).most_common()
    pattern = sorted([c for _, c in cnt], reverse=True)
    if is_straight and is_flush: cat = 8
    elif pattern == [4,1]:      cat = 7
    elif pattern == [3,2]:      cat = 6
    elif is_flush:              cat = 5
    elif is_straight:           cat = 4
    elif pattern == [3,1,1]:    cat = 3
    elif pattern == [2,2,1]:    cat = 2
    elif pattern == [2,1,1,1]:  cat = 1
    else:                       cat = 0
    order = []
    for r,c in sorted(cnt, key=lambda x:(x[1], ranks.index(x[0])), reverse=True):
        order += [r]*c
    key = tuple(sorted([ranks.index(r) for r in order], reverse=True))
    return (cat, key)

def best_5_from_7(cards7):
    best = None
    for comb in combinations(cards7, 5):
        rank = hand_rank_5(comb)
        if best is None or rank > best:
            best = rank
    return best

def simulate_heads_up(hole_hero, iters=5000):
    wins = ties = 0
    for _ in range(iters):
        d = deck.copy()
        for c in hole_hero: d.remove(c)
        random.shuffle(d)
        villain = d[:2]; board = d[2:7]
        hero_best = best_5_from_7(hole_hero + board)
        vill_best = best_5_from_7(villain + board)
        if hero_best > vill_best: wins += 1
        elif hero_best == vill_best: ties += 1
    return (wins + 0.5*ties) / iters

# Example: AK suited
print("AKs win rate (est.):", round(100*simulate_heads_up(["A S".replace(" ",""), "K S".replace(" ","")], iters=8000), 2), "%")

6) From Counting to Strategy: Study the Margins

The table gives exact 5-card odds. Real Hold’em decisions are conditional: the flop, turn, and river reveal information that changes your space of outcomes. Use the Rule of 4 and 2 for fast approximations and sanity-check with EV. When in doubt, simulate.


7) Study Tips / Practical Checklist

  • Memorize the 5-card table; know which hands are truly rare.
  • Drill outs and the Rule of 4/2 until instant.
  • Always compare win probability to break-even p^*.
  • Log hands you found close—recompute later with exact math.
  • Use small Monte Carlo experiments to calibrate intuition.

Conclusion

Combinatorics tells you how rare each 5-card hand is. Conditional probability and approximations (outs, Rule of 4/2) make quick decisions possible. EV and pot odds translate beliefs into actions, and tiny simulations validate your reasoning. You won’t remove uncertainty, but you’ll replace guesswork with structure and discipline.

Similar Posts