Вероятность в покере для начинающих: полное руководство
Если вы умеете считать, вы сможете научиться мыслить как игрок в покер. В краткосрочной перспективе покер кажется игрой на удачу, но в основе каждого решения лежат комбинаторика, вероятность и ожидаемая выгода (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}.
Стандартные вероятности комбинации из 5 карт
| Тип руки | Комбинационный счет | Вероятность |
|---|---|---|
| Флеш-рояль | 4 | 0.000154% |
| Стрит-флеш (экс-роял) | 36 | 0.001385% |
| Четыре вида | 624 | 0.0240% |
| Фулл-хаус | 3,744 | 0.1441% |
| Флеш (экс-стрит-флеш) | 5,108 | 0.1965% |
| Стрит (бывший стрит-флеш) | 10,200 | 0.3925% |
| Тройка | 54,912 | 2.1128% |
| Две пары | 123,552 | 4.7539% |
| Одна пара | 1,098,240 | 42.2569% |
| Старшая карта (без пары, без стрита/флеша) | 1,302,540 | 50.1177% |
3) От подсчета до принятия решений: шансы банка и EV
Подсчет является основой; решения зависят от ожидаемой ценности (ОЦ). Если действие приводит к результатам x_i с вероятностями p_i, то:
\mathrm{EV}=\sum_{i} p_i,x_iВ покере x_i это денежная величина: фишки, которые вы выигрываете (+) или проигрываете (−). Колл вызов , если \mathrm{EV} > 0При наличии комбинации с возможностью дромы часто сравниваем шансы на выигрыш до шансами на дро.
- Пот шансы (в соотношении) = \dfrac{\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{сделать смыв у реки})\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) Собираем всё воедино: план обучения для начинающих
- Запомните таблицу шансов из 5 карт и понимать комбинаторику.
- Практика outs и Rule of 4 and 2 пока вы не сможете вычислять их мгновенно.
- Использовать шансы на выигрыш и помощники EV для проверки реальных рук, которые вы сыграли.
- Run Монте-Карло в конкретных сценариях (ваши две закрытые карты против предполагаемого диапазона оппонента).
- Добавить Байесовское мышление: обновите свою модель противника на основе наблюдаемых действий.
- Держать ручной журнал: решения, расчёты, результаты. Вы увидите закономерности и ошибки.
Заключение
Покер — это богатая лаборатория для изучения вероятности, статистики и рационального принятия решений. Комбинаторика показывает, насколько редкой является каждая рука. Условная вероятность и байесовский алгоритм объясняют, как новая информация меняет ваши убеждения. EV и шансы банка превращают убеждения в выбор. Моделирование подтверждает теорию и тренирует интуицию. Вы не избавитесь от неопределённости, но замените догадки структурой, целостностью и дисциплиной.
Предлагаемые внутренние ссылки
- Ожидаемая ценность (EV) в покере: от шансов банка до прибыли
- Моделирование Монте-Карло для покерных комбинаций на Python
- Байесовское мышление за столом: диапазоны, вероятности и обновления

