каковы-вероятности-рояльного-флеша-покер

Каковы шансы выпадения роял-флеша? Вероятности, таблицы и примеры покерных комбинаций.

Если вы умеете считать, вы сможете научиться мыслить как игрок в покер. В краткосрочной перспективе покер кажется игрой на удачу, но в основе каждого решения лежат комбинаторика, вероятность и ожидаемая выгода (EV). В этом руководстве вы рассчитаете шансы для каждой классической пятикарточной комбинации (пара, две пары, трипсы, стрит, флеш, фулл-хаус, каре, стрит-флеш, роял-флеш), поймете, как переводить подсчеты в вероятности и шансы «1 к X», а также используете небольшие фрагменты кода на Питон для проверки результатов и проведения быстрых симуляций. Цель не в том, чтобы обещать выигрыш, а в том, чтобы помочь вам ясно рассуждать о неопределенности за столом.

Примечание для образовательных целей: Данный контент предназначен для изучения статистики и принятия решений. Он не гарантирует получения прибыли и не поощряет азартные игры.


Что вы узнаете

  • Как колода из 52 карт соотносится с количеством комбинаций.
  • Точные вероятности выпадения 5 карт и шансы «1 из X» для каждого ранга комбинации.
  • Пошаговые вычисления (например, одна пара, флеш, фулл-хаус) с помощью KaTeX.
  • Как сравнить шансы банка и шансы розыгрыша с помощью ожидаемой прибыли.
  • Небольшие фрагменты кода на Python для проверки количества элементов и проведения небольших симуляций.

1) Колода, комбинации и язык вероятностей

Стандартная колода состоит из 52 карт: 13 рангов (A, 2, ..., K) × 4 масти (♠♥♦♣). В 5-карточном покере мы рассматриваем комбинации как случайные числа. Знаменатель для всех точных вероятностей равен:

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

Все приведенные ниже точные вероятности выпадения 5 карт делят соответствующее количество карт в руке на \binom{52}{5}.


2) Точные шансы выигрыша в пятикарточных покерных комбинациях (количество, вероятность, «1 к X»)

Ниже приведена стандартная таблица взаимоисключающих подсчетов рук и вероятностей. «Шансы (1 из …)» — это просто \dfrac{1}{p}, округленное значение.

Тип рукиКомбинационный счетВероятностьШансы (1 к …)
Флеш-рояль40.000154%649,740
Стрит-флеш (экс-роял)360.001385%72,193
Четыре вида6240.0240%4,165
Фулл-хаус3,7440.1441%694
Флеш (экс-стрит-флеш)5,1080.1965%509
Стрит (бывший стрит-флеш)10,2000.3925%255
Тройка54,9122.1128%47
Две пары123,5524.7539%21
Одна пара1,098,24042.2569%2.37
Старшая карта (без стрита/флеша)1,302,54050.1177%2.0

Быстрые выводы
• Роял-флеш встречается в 4 из 2 598 960 возможных комбинаций из 5 карт — примерно 1 из 649 740.
• Более 92% всех пятикарточных комбинаций — это «одна пара» или хуже; примерно половина состоит из одной старшей карты.


Выводы формул (избранные)

Флеш-рояль

Вам нужен AKQJ-10 в одном костюме. Всего 4 костюма, поэтому:

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

Стрит-флеш (за исключением роял-флеша)

В каждой масти 10 ранговых последовательности (от A-5 до 10-A), за исключением королевской карты; всего 4 масти:

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

Одна пара

Выберите ранг пары; выберите 2 масти; выберите 3 различных боковых ранга; выберите 1 масть для каждого бокового ранга:

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

Фулл-хаус

Выберите ранг для поездок и другой ранг для пары; подберите масти соответственно:

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

Смыв (за исключением прямого смыва)

Выберите масть (4 способа), затем выберите любые 5 из 13 карт этой масти (без порядка), вычтите стрит-флеши этой масти:

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

(Всего 10 стрит-последовательностей × 4 масти = 40 стрит-флешей; 4 из них — роял-флеши.)


3) От подсчета до принятия решений: шансы банка и ожидаемая прибыль

Если действие приводит к результатам x_i с вероятностями p_i, то ожидаемое значение равно

\mathrm{EV}=\sum_i p_i x_i

Колл считается прибыльным, когда \mathrm{EV}>0. Быстрый тест на точку безубыточности сравнивает вашу вероятность выигрыша с шансы на выигрыш:

  • Коэффициенты банка (соотношение) = \dfrac{\text{сумма для колла}}{\text{банк после колла}}
  • Вероятность безубыточности выигрыша п^*:

p*=\frac{\text{сумма вызова}}{\text{сумма вызова}+\text{порция}}

Пример. Банк = 90 долларов; оппонент ставит 10 долларов; вы делаете ставку в 10 долларов → после ставки банк = 110 долларов.
p^*=\frac{10}{110}\approx 9.09%
Если ваши шансы на улучшение (и при этом на победу) превышают 9.09%, то колл имеет положительное ожидаемое значение фишек (без учета будущих улиц).


4) Правила выхода и приближения (Правило 4 и 2)

An out это невидимая карта, которая повышает ваши шансы на победу.

  • Впереди еще одна карта (река): P(\text{попадание})\approx \frac{k}{46}\approx 2k%
  • Впереди две карты (тёрн + ривер): P(\text{попадание})\approx 4k%

Типичные варианты выхода:

  • Открытый стрит-дро: к = 8 → ~32% по реке
  • Флеш-дро после флопа: к = 9 → ~36% по реке
  • Две старшие карты (одна из них парная по риверу, грубая карта): k\approx 6 → ~24%

Точный флеш на ривере после флеша из четырех карт на флопе (еще два флеша впереди).
Промахнуться мимо обеих улиц: \frac{39}{47}\cdot\frac{38}{46}\approx 0.676
Так что меня накрыло рекой: 1-0.676=0.324 ; (32.4%) — прекрасно согласуется с правилом 4 (9 аутов → ~36%).


5) Python: проверка количества совпадений, вывод таблицы вероятностей и моделирование.

5.1 Подсчет и вывод стандартных вероятностей

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 Шансы банка и вспомогательные средства EV (правило 4/2 уже заложено)

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 Миниатюрный Монте-Карло (Внимание, очень упрощенное описание)
Эта приблизительная симуляция сравнивает ваши закрытые карты с картами случайной руки, раздавая 5 общих карт и сравнивая 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) От подсчета к стратегии: изучите границы возможного.

В таблице указаны точные шансы для пятикарточной игры. Решения в реальном Холдеме зависят от обстоятельств: флоп, терн и ривер раскрывают информацию, которая меняет ваши варианты развития событий. Используйте правило Rule of 4 and 2 для быстрых приближений и проверяйте адекватность с помощью EV. В случае сомнений, смоделируйте ситуацию.


7) Советы по подготовке к экзамену / Практический контрольный список

  • Запомните таблицу пятикарточных комбинаций; знайте, какие комбинации карт действительно редкие.
  • Пробивка отверстий и правило 4/2 до настоящего момента.
  • Всегда сравнивайте вероятность выигрыша с точкой безубыточности. п^*.
  • Запишите найденные вами близкие по результату комбинации — позже произведите точные вычисления.
  • Используйте небольшие эксперименты методом Монте-Карло для калибровки интуиции.

Заключение

Комбинаторика показывает, насколько редка каждая пятикарточная комбинация. Условная вероятность и приближения (ауты, правило 4/2) позволяют быстро принимать решения. Ожидаемое значение и шансы банка преобразуют убеждения в действия, а небольшие симуляции подтверждают ваши рассуждения. Вы не избавитесь от неопределенности, но замените догадки структурой и дисциплиной.

Похожие сообщения