покер-вероятность-для-начинающих-полное-руководство

Вероятность в покере для начинающих: полное руководство

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

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


Что вы узнаете (краткое содержание)

  • Как стандартная колода из 52 карт преобразуется в комбинаторные подсчеты.
  • Точные вероятности классических комбинаций из 5 карт.
  • Как условная вероятность и новые карты (флоп/терн/ривер) обновляют ваши шансы.
  • Значение шансов банка, предполагаемых шансов и EV.
  • Как запустить моделирование Монте-Карло в Python для оценки вероятности выигрыша.

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

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

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

Это число является знаменателем для всех точных вероятностей выпадения 5 карт. В техасском холдеме, где вы получаете 2 закрытые карты и комбинируете их с 5 общими картами, мы часто прибегаем к условному подсчету или моделированию, поскольку последовательности раздач и взаимодействия игроков делают алгебраические вычисления сложными.


2) Точные шансы комбинаций из 5 карт в покере

Ниже приведены стандартные значения и вероятности для комбинаций из пяти карт. Вы можете пересчитать каждую из них, используя комбинации; я показываю один вариант, а затем привожу таблицу.

Пример вывода: Одна пара

  • Выберите ранг пары: \бином{13}{1}.
  • Выберите 2 масти для этого ранга: \бином{4}{2}.
  • Выберите 3 отчетливый ранги (не ранг пары) из оставшихся 12: \бином{12}{3}.
  • Для каждого из этих 3 рангов выберите 1 масть из 4: 4^{3}.
N_{\text{one pair}}=\binom{13}{1},\binom{4}{2},\binom{12}{3},4^{3}=1{,}098{,}240 P(\text{одна пара})=\dfrac{N_{\text{одна пара}}}{\binom{52}{5}}\approx 0.4226 ; (42.26%)

Стандартные вероятности комбинации из 5 карт

Тип руки Комбинационный счет Вероятность
Флеш-рояль40.000154%
Стрит-флеш (экс-роял)360.001385%
Четыре вида6240.0240%
Фулл-хаус3,7440.1441%
Флеш (экс-стрит-флеш)5,1080.1965%
Стрит (бывший стрит-флеш)10,2000.3925%
Тройка54,9122.1128%
Две пары123,5524.7539%
Одна пара1,098,24042.2569%
Старшая карта (без пары, без стрита/флеша)1,302,54050.1177%

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

Подсчет является основой; решения зависят от ожидаемой ценности (ОЦ). Если действие приводит к результатам x_i с вероятностями p_i, то:

\mathrm{EV}=\sum_{i} p_i,x_i

В покере x_i это денежная величина: фишки, которые вы выигрываете (+) или проигрываете (−). Колл вызов , если \mathrm{EV} > 0При наличии комбинации с возможностью дромы часто сравниваем шансы на выигрыш до шансами на дро.

  • Пот шансы (в соотношении) = \dfrac{\text{сумма для колла}}{\text{банк после колла}}.
  • Вероятность безубыточности п^{\аст} необходимо позвонить:
p^{\ast}=\dfrac{\text{сумма для колла}}{\text{сумма для колла}+\text{пот}}

Пример: В банке $90, оппонент ставит $10, вы должны сделать колл $10, чтобы увидеть следующую карту. После колла банк становится $110.
Точка безубыточности p^{\ast} = \dfrac{10}{110} \approx 9.09%.
Если ваш шанс улучшиться (и выиграть) превышает 9.09%, вызов имеет положительный чип-электромобиль—игнорируя будущие ставки (это предполагаемые шансы).


4) Правила аутов и аппроксимации за столом

An out это невидимая карта, которая улучшает вашу руку до наиболее вероятного уровня. При наличии одной оставшейся карты (ривер), вероятность получения хотя бы одного из ваших k аутов из оставшихся невидимых карт приблизительно определяется следующим образом:

P(\text{hit on river})\approx \dfrac{k}{46}

С впереди еще две карты (терн и ривер), удобным приближением является Rule of 4 and 2:

  • После флопа (осталось две карты) предполагаемый шанс \приблизительно 4 тыс.%.
  • После хода (осталась одна карта) предполагаемый шанс \приблизительно 2 тыс.%.

Общие выходы

  • Открытый стрит-дро: к = 8 → ~32% по реке (Правило 4).
  • Флеш-дро (после флопа): к = 9 → ~36% по реке.
  • Пара оверкарт (две оверкарты): около к = 6 → ~24% по реке.

5) Условная вероятность в Техасском Холдеме

Информация поступает поэтапно (префлоп → флоп → терн → ривер). Каждое раскрытие карты определяет вероятностное пространство. Если A — событие «я собираю флеш на ривере», а B — событие «на флопе показаны две карты моей масти», то:

P(A\mid B)=\dfrac{P(A\cap B)}{P(B)}

Вместо того чтобы каждый раз проделывать сложные переборы, игроки используют outs и приближения — или же проводят симуляцию.

Пример: флеш на ривере при 4-флеше после флопа
У вас две червы; на флопе показаны две червы, что дает вам 4 сердца комбинированный и 9 аутов (13 червей − 4 видно). Точный дополнительный расчёт для случая «промаха и на тёрне, и на ривере»:

P(\text{нет червы на терне и ривере})=\dfrac{39}{47}\cdot\dfrac{38}{46}\approx 0.676

Итак,

P(\text{сделать смыв у реки})\approx 1-0.676=0.324

что соответствует интуитивному правилу 4 для к = 9 после флопа.


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

Вам не нужен решатель, чтобы учиться. Начните с трёх полезных скриптов.

6.1. Точный подсчет вероятностей комбинаций из 5 карт

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}%")

6.2 Ауты, шансы банка и помощник EV

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

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

def call_chip_ev(amount_to_call, pot_before_call, win_prob):
    pot_after_call = pot_before_call + amount_to_call
    # EV = win_prob * pot_after_call - (1 - win_prob) * amount_to_call
    return win_prob * pot_after_call - (1 - win_prob) * amount_to_call

# Example:
to_call = 10
pot = 90
p_be = break_even_prob_to_call(to_call, pot)
p_approx = approx_hit_prob(outs=9, cards_to_come=2)  # flush draw after flop
ev = call_chip_ev(to_call, pot, p_approx)
print("Break-even prob:", round(p_be, 4))
print("Approx win prob:", round(p_approx, 4))
print("Chip EV of call:", round(ev, 2))

6.3 Мини Монте-Карло для холдема один на один (очень упрощенно)

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 = sorted([c[0] for c in cards5], key=ranks.index)
    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()
    counts = sorted([c for _, c in cnt], reverse=True)
    if is_straight and is_flush: cat = 8
    elif counts == [4,1]:        cat = 7
    elif counts == [3,2]:        cat = 6
    elif is_flush:               cat = 5
    elif is_straight:            cat = 4
    elif counts == [3,1,1]:      cat = 3
    elif counts == [2,2,1]:      cat = 2
    elif counts == [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=20000):
    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: simulate A♠K♠
hero = ["AS", "KS"]
wr = simulate_heads_up(hero, iters=5000)
print("Estimated win rate for AK suited (heads-up):", round(100*wr, 2), "%")

7) Теорема Байеса: обновление убеждений на основе действий оппонента

Покер — это не просто карты; это умозаключения о диапазонах. Теорема Байеса формализует, как новые данные (ставка, чек или повышение оппонента) обновляют ваше представление о его руке.

P(H\mid E)=\dfrac{P(E\mid H),P(H)}{P(E)}
  • H: гипотеза (у оппонента сильная рука).
  • E: доказательства (оппонент делает 3-бет на префлопе).
  • П(Н): предшествующий— как часто этот игрок силен до того, как увидел действие.
  • P(E\mid H): вероятность— насколько вероятно, что сильная рука сделает здесь 3-бет.
  • P(H\средний E): задний— обновленная вероятность после наблюдения 3-бета.

На практике мы аппроксимируем априорные данные на основе тенденций популяции (например, тайтовый игрок делает 3-бет примерно в 3–5% рук), а затем уточняем их с помощью нашей выборки увиденных рук.


8) Разница в знаниях против мастерства: почему математика побеждает в долгосрочной перспективе

Краткосрочные результаты непредсказуемы. Даже при стратегии с положительным ожидаемым значением (EV) вас ждут полосы убытков. Закон Закон больших чисел , основанный на анализе множества раздач , показывает, что средние значения выборки приближаются к истинным средним. Если ваши решения систематически имеют \mathrm{EV} > 0, ваша долгосрочная ожидаемая прибыль будет положительной, хотя дисперсия (нестабильность) может быть значительной.

Простой способ это визуализировать — смоделировать ситуацию с нестандартной монетой (EV>0) и посмотреть на траектории кумулятивной прибыли: многие траектории будут отрицательными в краткосрочной перспективе, но тенденция будет восходящей по мере увеличения количества попыток. То же самое верно и для покера: истинное значение EV проявляется с увеличением объема игры и дисциплины.


9) Этичная игра: управление банкроллом и самоконтроль

Математика помогает избежать самообмана:

  • Поставьте правила банкролла (например, бай-ин ≤ 5% от банкролла для кэш-игр; ≥ 100 бай-инов для турниров — консервативное практическое правило).
  • Уважение стоп-лосс и стоп-победа ограничения для уменьшения наклона.
  • Помните, что осознанная игра Всё ещё несёт риск. Цель — принятие более взвешенных решений, а не уверенность.

10) Собираем всё воедино: план обучения для начинающих

  1. Запомните таблицу шансов из 5 карт и понимать комбинаторику.
  2. Практика outs и Rule of 4 and 2 пока вы не сможете вычислять их мгновенно.
  3. Использовать шансы на выигрыш и помощники EV для проверки реальных рук, которые вы сыграли.
  4. Run Монте-Карло в конкретных сценариях (ваши две закрытые карты против предполагаемого диапазона оппонента).
  5. Добавить Байесовское мышление: обновите свою модель противника на основе наблюдаемых действий.
  6. Держать ручной журнал: решения, расчёты, результаты. Вы увидите закономерности и ошибки.

Заключение

Покер — это богатая лаборатория для изучения вероятности, статистики и рационального принятия решений. Комбинаторика показывает, насколько редкой является каждая рука. Условная вероятность и байесовский алгоритм объясняют, как новая информация меняет ваши убеждения. EV и шансы банка превращают убеждения в выбор. Моделирование подтверждает теорию и тренирует интуицию. Вы не избавитесь от неопределённости, но замените догадки структурой, целостностью и дисциплиной.


Предлагаемые внутренние ссылки

  • Ожидаемая ценность (EV) в покере: от шансов банка до прибыли
  • Моделирование Монте-Карло для покерных комбинаций на Python
  • Байесовское мышление за столом: диапазоны, вероятности и обновления

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