Как стать автором
Обновить

Комментарии 31

Если сделать такую генерацию хотя бы 1000 раз, то думаю средняя вероятность выигрыша будет достаточно достоверна.

Погрешность такой оценки будет примерно равна корню из одной тысячной - примерно 3%

Получилось, что для любого начального расклада можно посчитать некую абстрактную вероятность. Если соперников двое или более, то просто возводим в степень нашу вероятность количеством соперников, т.к. это простое условие

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

И ещё для большинства комбинаций масть вообще не важна, и тогда количество вариантов для перебора будет сильно меньше. Мне интуитивно кажется, что вероятность выпадения двойки или тройки одинаковых карт можно точно посчитать.

примерно равна корню из одной тысячной

Оценка такой погрешности считается как квантиль по бета-распределению, и равен он будет такому корню только при существенно определенном значении квантиля.

Послушайте, но изобретать велосипед с нуля в области, где люди сделали уже очень и очень много - это несколько наивно, вам не кажется?

Калькулятор априорных вероятностей для покера - вещь совершенно базовая, ею сейчас пользуются примерно все. Статистика по играм противника - тоже.

Надо идти дальше.

Надо идти дальше.

Согласен, нужно идти. Но зачем мне идти в покер? Я описал принцип, который может быть применен к широкому кругу задач, а не только в покере. И именно этим он был интересен.

Не хочу показаться занудой, но я бы начал решение задачи с более подробного изучения предметной области. Есть огромное количество материала, например отличные книги Дэна Харрингтона. Там есть описание победного алгоритма.
Статистика прошедших игр может быть интересна для изучения только если вы играете с более менее постоянным контингентом людей, игроков любителей. Для новых, неизвестных партнеров она бесполезна.

В заключении хочу сказать, что в принципе, реализация программы выигрывающей в покер, это скорее муторная и объемная вещь, чем что-то сверхсложное. И все упирается в наличие достоверной статистики прошедших игр.
Чисто абстрактно — в ситуации когда играет куча обычных игроков и тут Вы зашли с алгоритмом — да, реализация возможна.
На практике — на любом покер-сайте играет огромное количество ботов, поведение которых вычислить невозможно (в том числе потому что они маскируют свое поведение), поэтому выигрывает как обычно — казино.

Есть сайты вроде Zynga - где боты не только играют, но они и напрямую интегрированы в движок. Это видно по ставкам на очень маловероятные комбинации с выпадением этих самых комбинаций - или "знанию" ваших карт "соперниками".

Каким образом они маскируют поведение? Есть статистика, она одинаково собирается на ботов и не ботов. Понятно что хороший бот будет делать случайные отклонения и менять стиль игры, но так же делают и более-менее хорошие игроки начиная со средних лимитов. Можно неделю играть пассивно, а потом неделю агрессивно, а статистика при этом будет средней, вот и маскировка. При этом надо понимать, какое представление о вас в данный момент имеет соперник. Были стратегии , по которым можно было играть в хороший плюс без какого-либо учёта статистики соперника, а свои действия выполнять буквально по бумажке, например стратегия коротких стеков, я по ней играл и бота сделал по ней, но правда забанили и я бросил эту затею в итоге. Казино то понятно что выигрывает, но и боты значит тоже, раз их полно, как вы говорите. Кстати в hyper sng турнирах, например, действия и статистика соперника почти не важны, там основа это ICM, и бота как раз очень просто сделать, но прибыль там в любом случае очень низкая, и брать их можно только огромным количеством.

в принципе, реализация программы выигрывающей в покер [..] упирается в наличие достоверной статистики прошедших игр
Я, видимо, что-то не так понял.
Разве у этого эксперимента есть память? Единственное, что можно увидеть на большой выборке это регулярности в генераторе псевдослучайных чисел. А так, все игровые сессии «одинаковые».

… Аааа, вот, простите, почитал комментарии, и понял, вы имеете ввиду использовать сбор и анализ данных, чтобы делать обоснованные предположения о стратегиях игроков. Окей. Да. Так в любом киберспорте уже довольно давно делается. Наверно в покере даже эти стратегии лучше «видно», ведь там люди часто придерживаются какой-то личной псевдорациональной стратегической линии.

Поставленная задача была решена лет 5 назад ( могу и приврать ибо гуглить лень ) парнями из MTI. Обученная ими нейронка уверенно обыгрывала топовых игроков.

Обещали выложить в паблик код но вроде так и не выложили.

А теперь покритикую так как в этой теме уже много лет.

Колода это выборка с изъятием, из них при начальном раскладе известны 5 карт - 3 на столе и 2 на руках, 

уже ошибка. Вначале раздается по 2 карты игрокам это префлоп. Уже на префлопе можно коллировать или повышать или пасовать. Пара двоек на префлопе - это почти приговор. Надо сбрасывать особенно если противники повышают и вы не на блайнде сидите. Пара тузов - надо блефовать и давить ставками или сбрасывать тут что чуйка говорит. Хотя откуда у машины чуйка?

Получилось, что для любого начального расклада можно посчитать некую абстрактную вероятность. 

неа. Ничего это не означает - сферический конь в вакууме. На любом раунде начиная с префлопа до ривера важна не вероятность выигрыша а обмануть соперника внушив ему что ваша карта лучше его. Покер лишь на 50% это теорвер. Остальные 50 это психология и блеф.

Практической пользы от вашей работы вы уж простите ноль целых ноль десятых.

Копайте в сторону нейронки.

Покер лишь на 50% это теорвер. Остальные 50 это психология и блеф

Это вы сейчас ситуацию для хедз-апа или для вечерней дружеской катки обрисовали. Или для финала турнира.

Но современный «профессиональный» покер — это два десятка одновременно открытых столов плюс 100% математики плюс SharkScope. Здесь нет места психологии и тем более блефу.

я не играю в онлайне и никогда не играл. Только за столами с живыми игроками и в казино и в дружеской катке.

Только за столами с живыми игроками и в казино и в дружеской катке.


В России IRL с покером не всё так просто. С онлайновым тоже, но попроще.

Есть у меня знакомый, который профессионально играет в покер, для заработка, так он играет именно так, как пишет tmnhy: аккуратно и на чистом расчете. Говорит: "мне нужно каждый день кушать, а не банк сорвать".

Оптимистично - не имея понятия об игре, разрабатывать программу для игры неё. Для примера:

Пара тузов префлоп это сильнейшая комбинация карт. С парой тузов префлоп не блефуют (блефуют со слабой картой). Имея пару тузов префлоп - цель игрока получить уже на стадии префлоп торговли как можно больше денег в банк и выбить максимальное количество игроков из игры (идеально остаться 1 на 1) постфлоп. Имея пару двоек в руке это никакой тне приговор - т.к. в 12% случаев вы получите на флоре сет и имея не опасный флоп (типа 289) можно выиграть много денег у той же пары тузов. Поэтому имея пару двоек префлоп - цель как можно дешевле увидеть флоп, а затем пасануть при невыходе третей двойки.

Это только крупица того, что нужно знать пытаясь играть в покер (или разрабатывать программу для покера). Кроме того, для успешной игры нужно принимать во внимание глубину стека противников, их типовые стратегии и текущее психологическое состояние.

Интересное начало. Но мир не стоит на месте, и кроме поиска по дереву есть и другие алгоритмы.
«ГЛУБОКОЕ ОБУЧЕНИЕ И ИГРА В ГО» почитайте. Отличная книга, жаль только не все опыты можно повторить для простого смертного.

Ассистенты игры в онлайн покер, находятся в полулегальном положение, они пользуется спросом и за них готовы платить деньги. Их задача обычно не играть заместо игрока, а подсказывать текущий расклад, помнить какие карты ушли, и какова вероятность успеха/не удачи при следующих шагах. В принципе теоретически ничего не мешает построить марковскую сеть и принимать решение за игрока, но как ни странно спросом пользуется именно ассистенты, а не боты. Ботов конечно же отлавливают, и блокируют, но это другая сторона проблемы, не алгоритмическая. Хотя она тоже алгоритмическая, но с другой стороны.

Ассистенты игры в онлайн покер, находятся в полулегальном положение

А почему полулегальность? В чем здесь какое-либо мошеничество?

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

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

Так же само слово полулегальность напоминает слово полубеременность.

Игра в покерном клиенте (как и в любом другом сервисе, игре) не предполагает, что вы будете пользоваться дополнительным софтом, т.к. клиент игры считается производителем самодостаточным. Использование любых ассистентов во время игры даёт необоснованное преимущество, и это карается.

"Полулегальность" состоит в том, что есть списки запрещённого софта. Но есть софт который даёт некое преимущество, но пока не забанен, т.к. у него есть отмазка в виде того, что его можно использовать не во время игры (хотя имеется функционал для подсказок в игре). Но в случае каких-то спорных моментов клиент игры это отследит и казино решит вопрос в свою пользу.

Ни один нормальный рум не запрещает использовать, например, Holdem Manager, который предоставляет в том числе hud с отображением статистики. Им пользуются примерно все сколько-то серьезные игроки, включая амбасадоров брендов. Это к вопросу о том что никто не предполагает что вы будете пользоваться дополнительным софтом. Этот дополнительный, вполне легальный, софт вообще отдельная тема. Там настолько все серьезно, что автор на этом фоне написал грубо говоря «Hello world» и радуется.
Далее, я конечно не настоящий покерный профессионал, и не искал, но как-то пока крутился в том районе, не слышал чтобы был какой-то ультимативный софт который подсказывает мувы так, что можно стабильно обыгрывать живых людей. Сговоры между людьми? Да, наверняка лобби хайстек хедз-апов до сих пор забито участниками сговоров. Торговля статистикой? Да. Волшебный софт про всех победить? Извините, нет. Единственное что в голову приходит на тему прям запрещенного софта, это всякие скрипты с отслеживанием столов с фишами, и автоматическая подсадка за них.

Фраза о том, что рум не предполагает, что вы будете пользоваться дополнительным софтом означает, что клиент самодостаточен, и для игры дополнительно ничего не нужно.
Я соглашусь с вами в том, что вы просто мало искали. Набирайте в поиске подсказчики для покера или GTO солверы.

Есть мнение, что игра по тому что солвер выдает за GTO может и в минус привести уже на средних лимитах.

Солвер имеет смысл, как я понимаю, против "оптимальных" игроков, чтобы перемалывать рейк и против предсказуемых. Наверняка заходит в Zoom и SNG с коротким стеком. В кэше, да ещё и на невысоких лимитах, выгоднее просто эксплуатировать ошибки игроков.

а если это мной разработанный софт и не входит ни в какие списки, это легально?

тогда имея исходники нелегального софта и чуть поправив их получаю вполне легальный софт

Пока вас не поймают за игрой с ним. Тут же расклад какой? Исходников хорошего софта вам не получить по очевидным причинам. Когда вы напишите свой, то встанет вопрос: как его монетизировать, т.к. вы потратили очень много времени и сил на его написание? Можно начать продавать софт, тогда рум отследит появление нового софта и забанит софт и игроков, которые начнут им пользоваться. Если вы будете играть самостоятельно, то это будет иметь смысл на высоких лимитах. А там вас начнут "вычислять" регуляры, которые очень не любят читеров. Внезапно появившийся игрок с хорошей игрой всегда вызывает интерес.

Если читать покерные новости, то регулярно разоблачают то там, то тут, банят пачками. Румы в любой мутной ситуации включают презумпцию виновности. Но не всегда они очень бдительны. Бывает, что отлавливают игроков, которые успевают прилично обогатиться до момента расплаты.

> В чем здесь какое-либо мошеничество?

Дело в том, что в общем и целом никто не играет против рума. Поэтому мошенничество есть, но оно не связано с асисстентами, а как и везде связано с людьми.

Вы такой термин слышали, как «читерство»? Использование асисстента подразумевает получение преимущества перед другими игроками. Почему румы это пресекают, хотя вроде всё легально? Потому что абстрактная деятельность покер-рума состоит в организации игр и контроле за соблюдением правил и «честной» игры. И за это покер-рум с каждого выигрыша берёт процент комиссии — рейк. Основной клиент для покер-рума — это фиш, которого очень сложно будет удержать, если его будут катать «профи» с асисстентами.
Тут, всё как и в других онлайн-играх, дашь волю читакам — потеряешь аудиторию.

Кстати, почему деятельность в кавычках и «абстрактная», потому что румы рано или поздно, вводя новые форматы игр, по сути становятся казино, зарабатывая не только на рейке.

Если сделать такую генерацию хотя бы 1000 раз, то думаю средняя вероятность выигрыша будет достаточно достоверна. Для современного рядового десктопа это займет ничтожные доли секунды.

У каждого из противников всего две карты, а значит может быть только одна из приблизительно 2500 комбинаций карт. Сравниваем каждую из этих комбинаций с нашей, определяем процент более сильных комбинаций под текущую ситуацию - вот и точный шанс победы. И не нужно никакой случайности.

Плюс такое решение легко мастшабируется на любое количество игроков - ведь комбинации нужно считать только один раз, сколько бы их за столом не было.

Там еще 2 случайные карты на стол. Итого около 4млн вариантов.
В спойлере нудный текст

Сразу оговорюсь, что я в покер не играю, и знаю его хуже чем те, кто играет свои первые партии в жизни. Но может это не так уж и важно?

Нет, это важно, если вы хотите какую-то ценность вашей программы.
Как я понял, у вас получилось что-то типа покерного калькулятора. Среди покерного софта это самое базовое. Вы можете посмотреть уже готовые реализации, например FlopZilla или Equilab, уверен, есть и другие, но это самые распространенные.

Есть софт по сбору статистики на основе открытых раздач: HoldemManager, PokerTracker, Hand 2 Note и др.

Если хотите посмотреть на реализацию тех самых деревьев действий - загуглите "poker solover", есть триалы, но они сложные для понимания даже для игроков с неким опытом.

Этими программами пользуются для корректировок своей своей стратегии и работы над игрой, на это не панацея, хоть и игра по соловеру будет прибыльной.

Тут нужно немного погрузиться в теорию покера: сейчас существует 2 (мне известные) прибыльные стратегии: Эксплоит (эксплуатирующая) и GTO. По первой - мы анализируем игры оппонента, ищем в ней ошибки и используем их себе во благо, по второй - мы делаем свою игру максимально не эксплуатируемой. Для надежности первой нам нужно иметь базу раздач на оппонента, чем больше база - тем больше будет вероятность правильности наших действий. Поэтому, строить какой-то выигрывающий софт лучше по GTO стратегии. Наверно глупо будет описывать тут всю покерную математику, просто скажу, что она сложнее, чем вы себе представляете в этой статье.

ко мне с вопросом, как сделать программу, которая будет выигрывать в покер

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

Если же заказ был для офлайн покера, (типа подсказка в наушники, профессор лопух), то тут все сложнее. Не одна программа и не одна стратегия не может гарантировать выигрыш за живым столом из-за его короткой продолжительности. В мире покера очень плотно зашло понятие математической дисперсии. Кто не знает и лень гуглить, на пальцах: в близких к идеальным условиях выпадение решки или орла 50 на 50. И так и будет, на 1кк бросков мы получим ~500к на ~500к. На 1к числа близкие к 500. Но, на 10 бросков мы можем получить перекос 10 к 0. Так же в покере, в ситуации, где у оппонента 2% (округленная вероятность выпадения одной карты) а у вас 98% любой софт будет советовать вкидывать в такие банки максимум фишек. Но, у соперника все же есть вероятность победы. В общем, та самая доля везения. Ни одна стратегия не будет хорошо работать на короткое количество раздач.

По поводу легальности в покер румах: боты под запретом везде. Калькуляторы и соловеры нельзя использовать во время игры (клиент это отслеживает). Сбор статистики сейчас разрешен на некоторых румах, например, самый крупный - PokerStars, но с оговорками для самих программ, иногда они вынуждены подстраиваться под правила румов и урезать часть функционала в апдейта. Но, в целом, тенденция запрещать любой софт уже пару лет как набирает обороты.

Эта ниша сейчас имеет много сильных решений, занявших рынок и укрепившихся на нем. Это большие деньги (аудитория не бедная) и серьезные команды, которые хорошо понимают покерную математику и тенденции игры. При всем уважении, разработчик - одиночка без опыта игры с пет-проектом ничего не сможет предложить рынку. Если у вас научный интерес - посмотрите программы в спойлере, если вы хотите сделать крутого бота - как подсказал комментатор выше - смотрите в сторону нейронок, но, в игре его едва ли удастся использовать (повторю, это не легально, но, как поговаривают, боты водятся). Удачи!

ps Волшебных палочек в нашей жизни практически нет, а если и есть, то стоят они дорого. Посоветуйте вашему заказчику найти покерного тренера. Неделя тренировок за $500-$1000 помогут ему уверенно обыгрывать большинство катранов ;)

pps Я сознательно не рассматривал моральную сторону ботоводства, мы тут все же про технические реализации.

ppps Прошу прощения за такой длинный комментарий, просто тема для меня инересная.

не совсем понятно, что хотели получить на выходе, но мне кажется, что бота для онлайн игры

Хотели получить выигрышную программу на халяву или как минимум за очень дешево. Хотели меня обманом под это подписать. Меня это растроило, и я все что успел придумать опубликовал здесь.

Посоветуйте вашему заказчику найти покерного тренера. Неделя тренировок за $500-$1000 помогут ему уверенно обыгрывать большинство катранов

У этого способа есть целых два препятствия: здесь нужно работать (над собой), и здесь нужно платить. Не все могут осилить хотя бы одно.

Абсолютно оторванная от игры работа. Наверное это "техасский холдем" прелесть конечно. Их два вида, если что.

Нет кучи факторов, в целом - это какое то слабое подобие первых покерных калькуляторов (pokerstove один из первых известных).

Без знания предметной области получается как обычно не очень. Если хочется покопаться в этой области - есть куча софта сейчас, можно их посмотреть, например flopzilla.

Вывод о том, что можно выигрывать если иметь базу игр не корректен. Майнинг (база рук) доступен, стоит копейки. Так что можете попробовать :)

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации