алгоритмов — Как рассчитать шансы на выигрыш одной покерной комбинации против другой?
спросил
Изменено
7 лет, 5 месяцев назад
Просмотрено
3к раз
Мой вопрос касается Техасского Холдема. Но я считаю, что этот алгоритм будет одинаковым для любой игры в покер.
Итак, рассмотрим две руки: AJo
и KQo
. Я могу использовать онлайн-калькулятор и узнать, что AJo
выигрывает в 59,48% случаев.
Мой вопрос: как я могу рассчитать эту вероятность программно?
Конечно, я могу использовать грубую силу, но это очень неэффективный способ. Выше двух рук 48 * 47 * 46 * 45 * 44 = 205,5 миллионов
комбинаций.
Кто-нибудь знает более эффективный способ расчета?
- алгоритмы
7
Всего около 1,7 миллиона комбинаций. Одни и те же пять карт могут появляться в 120 различных порядках, поэтому разделите полученное число на 120. Вычисление победителя для этих 1,7 миллиона комбинаций не займет много времени.
3
Проблема, которую вы описываете, относится к области математики, называемой комбинаторикой или иногда дискретной математикой, и имеет важное значение для изучения информатики.
Чтобы узнать об этой области математики применительно к вашей конкретной проблеме, я отсылаю вас к этой статье, в которой все очень подробно объясняется.
Я рекомендую поискать библиотеку XPokerEval
. Он не содержит для этого тривиальных алгоритмов (т.н. алгоритмов перебора), но содержит различные эффективные алгоритмы оценки, реализованные в основном на C, C# и Java. Затем вы можете посмотреть, как они реализованы.
Он включает в себя довольно много побитовых операций, так что потребуется некоторое время, чтобы понять их.
Первоначальный пост в блоге, в котором описывалась и представлялась эта библиотека, больше недоступен, но вы все еще можете найти несколько копий ее кода на GitHub.
В этом случае очень сложные расчеты вероятности выигрыша каждой руки займут меньше времени, чем перебор всех возможных комбинаций доски и определение в каждом случае выигрышной руки.
Но чтобы создать программу, которая определяет, какие вычисления делать на основе двух стрелок, потребуется гораздо больше времени, чем создать программу, которая просто перебирает все возможные комбинации.
Если вам нужна программа, которая может дать вам ответ сегодня, используйте ее методом грубой силы. Если вам нужна программа, которая может дать очень быстрый ответ, вы должны сделать это где-то в 2037 году.
Просто чтобы попытаться нарисовать картину того, насколько на самом деле сложны расчеты, AJs
выигрывает, когда KQo
не улучшается, если только доска не является выигрышной рукой, и в этом случае это ничья. Если KQo
улучшится, то он выиграет, если AJs
также не улучшится хотя бы на столько же, опять же, если борд не является выигрышной рукой.
2
Математика в покере является специализированной областью. Вы не даете много информации в своем посте, но я собираюсь предположить, что игра один на один, никаких ставок и карт до ривера (5-я улица, если хотите).
Калькуляторы шансов, такие как Poker Cruncher , позволяют вам установить комбинацию, а затем они раздают тысячи рук и смотрят, какая из них окажется выигрышной.
Для удобного инструмента нецелесообразно (или не очень полезно) вычислять каждую доску. Да, будет (и есть) дисперсия каждый раз, когда числа обрабатываются, но до тех пор, пока раздается приличное количество выборочных досок, они довольно точны (ну, достаточно точны, чтобы принять лучшее решение, чем в противном случае). Н.Б. Покер Кранчеру исполнилось 59 лет.5% за победу в бесконечном режиме.
Если вы планируете использовать это для реальной игры, это действительно очень тупой инструмент. Есть много других факторов, которые следует учитывать: EV, позиция, чтение, блайнды, стек, имидж стола, стилы и т. д. и т. д.
5
Понимание алгоритма — полное резюме: Справочный центр
UTR Rating — это модифицированная рейтинговая система, которая способствует честной и конкурентной игре в теннисном мире. Игроки оцениваются на основе фактических результатов, а не возраста, пола, национальности или социально-экономического статуса.
Когда вы поймете свой уровень мастерства, вы сможете найти хиты, события и турниры, где вы сможете весело провести время, сыграть в соревновательный теннис и улучшить свою игру. Все, что вам нужно знать, это ваш рейтинг UTR!
Что такое Рейтинг UTR ? Почему он должен быть у меня?
Рейтинг UTR — это число, которое обеспечивает реальное и точное измерение уровня навыков. UTR игрока — это число от 1,00 до 16,50.
Достаточно одного результата матча, чтобы получить прогнозируемый рейтинг UTR. Примерно после пяти матчей рейтинг становится полностью достоверным. По мере того, как матчи сыграны и введены в систему, UTR игрока будет увеличиваться или уменьшаться с течением времени в соответствии со следующей методологией.
Как рассчитывается?
Для каждого матча алгоритм вычисляет рейтинг матча и вес матча для каждого игрока. Рейтинг UTR игрока представляет собой средневзвешенное значение до 30 рейтингов его последних матчей. В UTR игрока учитываются только матчи за последние 12 месяцев.
Расчет рейтинга матча
При расчете рейтинга матча учитываются два фактора. Первый фактор – это разница в рейтинге UTR между соперниками. Вторым фактором является конкурентоспособность матча, определяемая процентом от общего числа выигранных игр.
Учитывая разницу в рейтинге UTR, алгоритм ожидает определенный процент от общего числа выигранных игр. Игрок, который показывает результаты лучше, чем ожидалось алгоритмом, увидит, что его рейтинг матча повысится, а рейтинг матча другого игрока понизится. Когда рейтинг матча одного игрока увеличивается, рейтинг матча другого игрока уменьшается на ту же величину.
Примечание. Если два игрока имеют разное количество матчей, засчитываемых в их рейтинг, общий рейтинг UTR не может увеличиваться или уменьшаться на одинаковую величину.
Расчет веса матча
При расчете веса матча используются следующие факторы:
Формат – Чем больше длина формата матча, тем больше вес. Матч с форматом из трех сетов получает больший вес, чем матч с форматом из восьми игр.
Конкурентоспособность – Чем больше разница в рейтинге UTR между игроками, тем меньше вес придается. Например, представьте себе игрока с UTR 6,00. Матч, сыгранный против соперника с рейтингом UTR 5,00 или 7,00, получает больший вес, чем матч, сыгранный против соперника с рейтингом UTR 4,00 или 8,00.
Надежность — По мере увеличения надежности рейтинга UTR противника ему придается больший вес. Матч, сыгранный против соперника, который часто участвует в соревнованиях и поэтому имеет надежный рейтинг UTR, получает больший вес.
Деградация по времени — По мере того, как предыдущие совпадения становятся старше, придается меньшее значение. Поскольку алгоритм представляет текущую форму, он больше учитывает матчи, сыгранные за последние несколько месяцев.
Способы улучшить ваш Рейтинг UTR
Играйте хорошо. Эффективное выступление в матчах — это самый простой способ улучшить свой рейтинг UTR. Если матч вышел из-под контроля, не сдавайтесь! Неважно, играете ли вы с противниками с более высоким или более низким рейтингом; вы можете улучшить свой UTR в любом случае, выиграв больше игр, чем ожидалось.
Играйте часто — чем больше матчей вы сыграете, тем быстрее ваш рейтинг UTR будет отражать вашу текущую форму. Алгоритм особенно точен для тех, кто часто играет против множества противников с рейтингом выше и ниже вашего.
Будьте терпеливы. Поскольку ваш рейтинг UTR представляет собой скользящее средневзвешенное значение, эффект от новых результатов немного запаздывает. Ваш рейтинг UTR может не полностью отражать недавний результат сразу, но со временем он будет.
Часто задаваемые вопросы
Я выиграл свой последний матч. Что произойдет с моим рейтингом UTR ?
Алгоритм фокусируется на процентах выигранных игр. Если игрок выигрывает более высокий процент игр, чем ожидал алгоритм, его рейтинг матча повышается. Точно так же, если игрок выигрывает меньший процент игр, чем ожидалось, его рейтинг матча снижается. Другие факторы, помимо вашего последнего матча, также влияют на изменение рейтинга UTR (см. следующий вопрос).
Какие факторы определяют повышение или понижение моего рейтинга UTR?
Важнейшим фактором, определяющим повышение или понижение рейтинга UTR, является добавление нового матча в послужной список игрока. Однако это не единственный фактор. Отказ вашего самого старого совпадения (поскольку ему исполнилось более 12 месяцев или оно было удалено при добавлении нового совпадения) также может повлиять. Еще одним фактором является временная деградация. По мере того, как предыдущие совпадения перемещаются вниз по списку, они получают меньше веса, поэтому средневзвешенное значение рейтингов и весов совпадений может измениться.
Может ли мой рейтинг UTR повышаться или понижаться, даже если я не сыграл ни одного нового матча?
Да. Поскольку алгоритм представляет собой динамическую систему, которая перекалибруется каждую ночь, в рейтинге UTR могут быть небольшие колебания. Это чаще встречается у игроков, недавно присоединившихся к системе. По мере того, как к послужному списку игрока добавляется больше матчей, его UTR становится более стабильным. Также существуют небольшие колебания весовых коэффициентов существующих матчей игрока, которые могут повлиять на рейтинг, даже если он не играет. Например, временная деградация будет медленно уменьшать вес существующих совпадений.
В матчах с большой разницей в рейтинге UTR может ли игрок с более высоким рейтингом увеличить свой рейтинг UTR?
Да. Если игрок с более высоким рейтингом работает лучше, чем ожидалось алгоритмом, его/ее рейтинг матча повышается.
Существует ли стратегия или формула повышения рейтинга UTR?
Нет. Некоторые игроки повышают свой рейтинг UTR, хорошо играя против противников с более высоким рейтингом. Другие увеличивают свой UTR, хорошо играя против противников с более низким рейтингом. Ключом к увеличению вашего UTR является хорошая игра и превосходство ожиданий, а не то, с кем вы играете.
Некоторые матчи не засчитываются в мой рейтинг UTR?
Алгоритм исключает матчи, в которых а) игрок отказывается от участия до начала матча, б) матч начинается, но ни один из игроков не выигрывает как минимум четыре игры (из-за отказа/снятия с соревнований) или в) существует разница в рейтинге UTR более 2,00 и игрок с более высоким рейтингом побеждает, как и ожидалось. Эти исключенные матчи по-прежнему отображаются в профиле игрока, но не используются при расчете рейтинга.
Почему алгоритм исключает совпадения с разницей в рейтинге UTR более 2,00?
По мере увеличения разницы в рейтинге UTR растет и вероятность того, что игрок с более высоким рейтингом легко выиграет матч. Наши данные показывают, что матчи с разницей в рейтинге UTR более 2,00 почти наверняка будут прорывными. Подобные результаты не указывают на уровень навыков любого игрока и исключаются алгоритмом. Однако в редких случаях алгоритм может подождать, чтобы собрать больше точек данных, прежде чем учитывать аномальный результат в рейтинге игрока.
Будут ли матчи с разницей в рейтинге UTR более 2,00 засчитываться в мой рейтинг UTR?
Да, есть один сценарий, в котором это происходит. Если игрок с более низким рейтингом выиграет матч, этот результат будет учитываться в рейтинге каждого игрока. Например, если 5.20 выигрывает матч против 7.61, этот матч будет засчитан. Однако, если 7.61 выиграет матч против 5.20, этот матч не будет засчитан. В редких случаях алгоритм может подождать, чтобы собрать больше точек данных, прежде чем засчитывать аномальный результат в рейтинг игрока.
Должны ли организаторы/тренеры участвовать только в тех матчах, которые они считают конкурентоспособными, или в тех матчах, в которых разница в рейтинге UTR составляет 2,00?
Организаторы/тренеры должны участвовать во всех матчах. Алгоритм будет автоматически игнорировать совпадения, которые не подходят.
Что делать, если за последние 12 месяцев я сыграл менее 30 матчей?
Отлично. Если вы сыграли только 10 матчей за последние 12 месяцев, алгоритм будет использовать эти 10. 30 — это просто максимум. Если вы сыграли 40 матчей за последние 12 месяцев, алгоритм будет использовать 30 самых последних матчей.
Почему мой профиль игрока показывает более 30 матчей?
Многие профили показывают более длинную историю матчей, но только самые последние матчи (со значком мяча UTR Rating рядом со счетом) используются для расчета вашего рейтинга. Совпадения без значка являются либо а) слишком старыми, б) отзывом, либо в) за пределами отсечки 2,00 для разницы UTR.
Почему для расчета моего рейтинга используется более 30 матчей?
Это происходит, когда 30-й последний матч был сыгран в тот же день, что и 31-й последний матч. Алгоритм не пытается определить, какой из них оставить, поэтому он сохраняет их оба. Они отвалятся вместе, когда будет добавлен следующий матч.
Играю редко. Могу ли я по-прежнему иметь рейтинг UTR?
Абсолютно. Одного матча достаточно, чтобы получить «прогнозируемый» рейтинг. Примерно после пяти матчей ваш рейтинг становится достоверным. Прогнозируемый рейтинг отображается как (P) в профиле игрока.
Что такое прогнозируемый рейтинг? Сколько матчей нужно, чтобы перейти от прогнозируемого рейтинга к надежному?
Алгоритму требуется примерно пять результатов, прежде чем он сможет вычислить надежный рейтинг UTR. Игроки с менее чем пятью результатами еще не являются полностью надежными, поэтому у них есть «прогнозируемый» рейтинг. Прогнозируемый рейтинг отображается как (P) в профиле игрока.
В чем разница между рейтингом UTR и проверенным рейтингом UTR?
Подтвержденный UTR отражает результаты только проверенных событий. UTR отражает результаты более широкого спектра типов событий, включая результаты, публикуемые самостоятельно, случайную игру, проверенные матчи и тренировочные матчи. Подробнее здесь.
Как работает алгоритм для двойников?
Одиночные и двойные алгоритмы очень похожи. Для парных игр алгоритм сравнивает средний рейтинг UTR команды A со средним рейтингом UTR команды B. Учитывая разницу в рейтинге UTR между этими двумя средними значениями, алгоритм ожидает определенный процент выигранных игр. Команда, которая работает лучше, чем ожидал алгоритм, увидит, что ее рейтинг матча повысится. Оба товарища по команде видят увеличение или уменьшение на одинаковую величину.
Как алгоритм подсчитывает тай-брейки?
Тай-брейки сетов считаются за одну игру; 3-й сет с 10-очковым тай-брейком считается за два гейма.
Как быстро UTR Rating обновляет мои последние результаты?
Алгоритм обновляется каждые 24 часа. Как только результат матча будет опубликован и импортирован в профиль игрока, результат будет отражен в рейтинге UTR на следующий день. Некоторые результаты публикуются директором турнира через несколько дней или больше.
Как UTR Rating решает проблему снятия средств для защиты рейтингов в юношеском теннисе?
Если игрок отказывается от участия либо а) до начала матча, либо б) во время матча, но до того, как один из игроков выиграет как минимум четыре игры, это не учитывается в алгоритме рейтинга UTR. Однако он будет отображаться в профиле игрока. Мы надеемся, что это отображение будет сдерживающим фактором для небольшой группы игроков, которые довольно часто отказываются от участия. Мы знаем и отслеживаем случаи, когда юные игроки злоупотребляют системой.
Как часто в алгоритм UTR Rating вносятся обновления?
Алгоритм время от времени обновляется для обеспечения точности по всем направлениям. Эти обновления одинаково влияют на всех игроков.
Может ли мой рейтинг UTR быть ниже 1,00 или выше 16,50?
Нет. Чтобы сохранить распределение рейтингов игроков по уровню мастерства, алгоритм имеет верхнюю и нижнюю границы рейтинга UTR.
Вся приведенная выше информация относится к матчам между полностью надежными игроками, как это определено рейтингом. Матчи, в которых хотя бы один игрок является частично надежным, могут следовать немного другим правилам — мы призываем всех игроков находить матчи и создавать надежный рейтинг.