тормоза все в функции сравнивающей две руки. ты считаешь так: определяешь комбинацию, если она одинаковая, то начинаешь считать карты и тп. то есть делаешь так, как считал бы человек. там можно пооптимизировать, но это тупиковый путь и для компа такое не покатит. все калькуляторы работают так: получают на вход 5-6-7 карт и выдают число, и число тем больше, чем сильнее рука. и сравнивают уже потом это число. и во всех калькуляторах используются заранее посчитанные таблицы. и все возможные комбинации не считают никогда - используют монте-карло. терн и ривер можно и полностью просчитать, но монте-карло даст идентичный результат. где монте-карло даст заметную погрешность, там полный перебор будет считать несколько дней ====================== Шаг 1. я считаю, в скольких процентах игр рука входит в банк при условии, что все всегда играют, и никто не фолдит. Предположение, что все всегда играют - изначально неверно. стол из 9ти игроков; раздаются карманные карты; на стол выкладываются 5 общих карт. Играется 42 миллиарда партий. Записываются карманные карты тех, кто победил Формат статистики: 84,54% (9,393%) 3* + 2* [27131879/288842711] -(9,393%) это процент побед для комбинации относительно всех партий, в которых эта комбинация участвовала. Учитываем, что за столом 9 игроков, т.е. шанс победить 1/9 - "нормальный", выше - хороший, ниже - плохой. -84,54% - это те же самые 9,393% умноженные на 9 (кол-во игроков). 100% - средняя сила карт, с которыми на оч. большом количестве рук, при условии, что на флопе открываются все 5 общих карт, количество побед составит ровно 1/(кол-во игроков). Проще говоря, этот параметр - "сила комбинации". И с комбинациями, сила которых ниже 100% входить в игру нецелесообразно. - 3* + 2* - тройка и двойка, обе масти * [27131879/288842711] -последнее число - количество партий, в которых эта комбинация участвовала (288 млн. из 42 миллиардов), первое число - количество партий, в которых игрок с такой карманной парой забрал или разделил с кем-либо банк. Итак, начинаем: hero сидит UTG и не имеет данных о предыдущих ходах, но знает, что за ним есть 3 луза и 3 тайта разной "степени" лузовости\тайтовости. Так же известно, что оба блайнда - тайты. И собственно вопрос: с каких самых слабых карт "оптимально" начинать игру? По сути это - математическая задача. Да вот только математика не умеет работать с абстрактными понятиями. Математика спрашивает у нас: -Ёпта, бро. А что для меня 'лузовый', как мне его перевести в цифры? А как мне перевести в цифры "спектр рук"? Ниччё нипанимаю. Тут hero должны бы посетить две мысли. Первая: не стоит разговаривать с математикой и надо прекращать курить дурь А вторая - такие понятия как "луз\тайт", а так же "спектр рук" хорошо бы соотнести с какими-то цифровыми значениями. И как раз тут очень кстати приходит ранжир карт, который мы составили на шаге 1. И именно он позволяет нам преобразовать слова в цифры. Например: если игрок играет только с монстрами, то он будет брать карты, сила которых выше 180%. Выше 170% - сильный тайт, .... 120-130 - луз, 110-120 - неоправданный луз, 100-110 - фиш, 90-100 - идиот, ниже - приравниваем к последнему. И тут следует сделать замечание. Игрок может играть в основном с картами, начинающимися по 140% силы, НО - у него может быть фича, что он любит комбу 22o, которая хотя и бывает актуальна, но в большинстве случаев лузовая. Какой этому игроку припишем % на основании его спектра? Была-не-была, будем считать, что "процентный спектр" учитывает только 90% самых сильных карт, с которыми играет игрок, а 10% самых слабых - отбрасывает. А затем, если, например, получился спектр 150, от него отнимается 10% и получается 140%. Это может показаться неразумным(а почему так, а не как-нибудь иначе?), но во-первых это позволяет превратить в цифру ещё одно понятие - "блеф"(точнее он перестает влиять на спектр), а во-вторых - у нас всё равно пока что нет никаких высчитанных таблиц вероятностей. И расчёты в рамках такой модели будут по определению оптимальными именно для неё. Что ж, на шаге 2 мы отцифровали понятие "спектр рук", а кроме того, в случае не-линейного (по вероятности выигрыша) спектра, к-рый будет в 90%+ реальных ситуаций, мы с некоторым приближением преобразовали этот спектр в эквивалент "линейного", который используем для расчётов мы сами. Шаг 3. Снова пытаемся решить ту же самую задачу. 9 игроков, префлоп, известны спектры, мы UTG, с чего ходить? Да вот только теперь, покурив математику, эта задача уже выглядит иначе: 9 игроков, мы UTG, мин.спектры захода в игру игроков: 110-120, 120-130, 120-130, 170-180, 170-180, 140-150, 130-140, 150-160. С какого мин.(процентного) спектра нам начать? Теперь уже всё проще - моделируем такую ситуацию(в которой известны все переменные) на ПК, и получаем следующую таблицу: (спектр нашего захода\прибыль по итогам миллиарда игр) 100:-54 110:1 120:-83 130:15 140:10 150:-13 160:9 170:-32 180:-34 (лишние нули с прибыли убраны) Итак, видим что играть оптимально начиная с карт силой 130-140%. Кстати, именно карты силой 140%+ по аналогичному "тесту" показали себя оптимальными по прибыли для подавляющего большинства столов из 9-ти ч-к, а карты 135%+ - оптимальными (в большинстве случаев) при наличии за столом 2 фишей или 3 лузов. И даже один фиш обычно делает оптимальным диапазон 138%+ вместо 140%, для стола из 9 игроков. (мелочь с виду, а несколько % влияния на прибыль по итогам миллиардов рук имеет) --- А каковы стеки? У всех одинаковые? И почему именно 9 игроков? Начни решать с 3-х челов. Ты на UTG (в данном случае 3MX - BU). Вот и реши с каким спектром тебе играть, в зависимости от стека твоего и оппов. Потом посади себя на SB, BB. И пойми с каким спектром баттон нападает на тебя. И почему? Ты ж был на его месте. Решишь для 3-х челов, добавишь еще одного, будет 4-ре, поймешь как себя вести на каждом месте из 4-рех. и.т.д. А ты сразу: Имеем 9 челов, с каких карт начинать? И почему ты решил, что оппы играют не оптимально? Лучше предположи, что они умные -- для расчётов прибыли я использовал упрощённую систему, по которой делающий фолд кидает в банк 1 цент, а играющий - ставит 24 цента. Не очевидно, но брал не с потолка:) Расчёт следующий: SB=3с, BB=6с (c -цент), Преффлоп может каждому игроку от 6с до 15с, флоп - от 0с до до 15с тёрн - от 0с до 30с, ривер - от 0с до 30с. Минимально возможная сумма, за которую можно дойти до вскрытия - 6с, максимальная - 90с. В среднем, по итогам миллиарда рук, игрок, который делает фолд, сидит на СБ в 1 из 9 случаев, и на ББ в 1 из 9. Значит в среднем 100к фолдов ему будут стоить (1/9)*0,03$ + (1/9)*0,06$ = (1/9)*0,09$ = 0,01$ за каждый фолд. Верно, что игрок, сидящий на блайндах, никогда сразу не сфолдит, но при слабых картах причиной этому будет скорее перспектива стила, чем реальные шансы на победу. Поэтому в моей модели блайндам разрешён фолд, а стилить никто не пытается. Ведь если никто не стилит, результаты расчётов будут по прежнему верны. (в случае, если все игроки сфолдили - деньги возвращаются им обратно, хотя если бы даже они отдавались тому, кто сидит на СБ - это бы ничего не меняло на оч.большом кол-ве рук) Ну так вот, выходит, что фолд стоит в среднем 1 цент, минимальная цена вскрытия - 6 центов, максимальная - 90. Так уж получилось, что в моей модели на флопе сдаются сразу все 5 общих карт (для того, чтобы исследовать влияние на игру одной лишь фазы префлопа), а потому я жёстко установил цену фолда в 1 цент, а цену игры - в 24 цента. При большом количестве игр это должно примерно соответствовать действительности, а кроме того, я проверял "прибыли" игроков, играющих друг против друга с разными спектрами при разных фиксированных ценах игры, от 10c до 60с. Результат - если менять среднюю стоимость игры от 15 до 60 центов, влияния на конечную прибыль игроков это не оказывает. Разве что если средняя цена игры будет 10 центов, то сказывается необходимость забирать блайнды, а потому немного увеличивается доходность лузовых тактик. А почему 9 игроков? Потому что хлеб и масло мои - моделирование и статистика. За большим столом на меня работает гауссовское распределение, т.е. "помехи" от тараканов каждого отдельного игрока уравновешивают помехи от тараканов других, и средний исход партии меньше зависит от отдельных "ярких" игроков, играющих нестандартно. -- Ты хочешь построить бота для СВОЕЙ игры, или для холдема? если для своей, то кто в нее будет играть? -- =========================================== Существет два мат.подхода к решению обозначенной проблемы. Первый подход заключается в предположении о том, как опп разыгрывает руки разной силы HS (вещественное число от 0 до 1). Предположение заключается в том, что опп из всего спектра возможных рук сбрасывает low % слабых рук, с mid % средних рук делает колл и с high % сильных рук делает рейз. При этом low + mid + high = 100% или (low + mid + high) / 100 = 1, что есть одно и то же. Другими словами имея все 1326 комбинаций (за вычетом невозможых) у оппа, мы вычисляем силу руки каждой и кладем в массив. Затем этот массив сортируем по возрастанию. После чего, зная вероятностую тройку оппа в текущем игровом контексте, разделяем этот массив на 3 части - это и есть наше видение того, как опп разыгрывает разные руки. Т.е. если опп делает фолд, то у него рука, сила которой приходится в low-часть массива, если коллирует - то mid, если делает рейз - то high. Например, мы определили, что опп на флопе делает конбет. Вытаскиваем вероятностную тройку этого события - (0, 0.15, 0.85) - Cbet 85%. Получаем low - нет рук (фолд запрещен), младшие + средние = 0 % + 15 % от массива (т.е. 1326 * 0.15) рук - чек, остальные 85 % - бет. Слабость этого подхода имеено в том, что мы изначально сделали такое предположение, которое фактически может быть неверным. Т.е. опп, имея вероятность 85 % конбет, может играть его с младшими руками, а со старшими, напротив, делать чек. Сильная сторона этого метода - это индивидуальный подход к каждому оппу, т.к. мы берем вероятностную тройку для каждого оппа. В классич. литературе этот подход называется Specific Opponent Modelling - SOM. Второй подход. Мы используем историю из огромного кол-ва рук N игроков, каждый из которых Hero, т.е. мы знаем его карты, начиная с начала раздачи, а не опп, только определенные карты которого открываются на ШД. Из этой объединенной истории (а точнее из множества историй разных Hero) тренируем нейронную сеть. Имея такую натренированную сеть, мы опять же перечисляем все возможные комбинации карт оппа и для очередной комбинации спрашиваем нейронную сеть о том, как бы она игралась. Для каждого запроса сеть дает нам ответ - вероятностную тройку FCR. Т.к. мы знаем, какое действие своершил игрок по факту, мы берем соотв. значение из тройки (F, C или R) и умножаем на него вес рассматриваемой комбинации (изначально допустим, что вес равен 1). В итоге после очередного хода игрока мы получаем перераспределение весов его возможных комбинаций, которое соотв. нашему предположению о его спектре. Этот подход очень эффективен, но также имеет недостатки: 1) сложно найти множество адекватных по размеру и стилю игры историй разных Hero; 2) у тебя получается единая объединенная модель (зашитая в нейронную сеть) всех оппонентов - т.е. некий идеальный оппонент, если фактический опп играет в сильно отличающуюся от универсальной стратегию, то при игре с ним твой бот будет делать ошибки и при этом не сможет этого осознать, т.е. адаптироваться. В классич. лит-ре этот метод называется Generic Opponent Modelling - GOM. Ктасти сказать. Если применить второй подход и взять оооочень много разных Hero с большой историей, а затем натренировать нейронную сеть и сохранить ее в каком то формате (в виде огромного числа текстовых файлов с вероятностными тройками) и построить на этой базе AI, то получится идеальный игрок против всех использованных при тренерировке сети Hero. Если для треннига брались качественные и разноплановые Hero, то из этого в принципе получится неплохой бот, но он будет абсолютным болваном против оппа, играющего "как то не так". Т.е. он не будет самоорганизовываться, чтобы устранить слабости в своей игре и эксплуатировать слабости оппа. --- Правильно понимаю что используя Первый подход мы на постфлопе как бы предполагаем у оппа все 1326 руки (за исключение карт что мы видим) и делим весь его спектр всего на три части low + mid + high? --- Да. При этом мы получаем пороговые значения силы руки для колла и рейза - HScall и HSraise применительно к конкретному оппу (т.е. у каждого они будут разными) в конкретной игровой ситуации. При большой статистике полученные значения будут достаточно точны. Теперь мы, также как и в случае с нейронными сетями, проходим все возможные руки оппа и для каждой, вычислив ее HS, задаемся вопросом "как бы опп сыграл эту руку, если мы знаем его пороговые HScall и HSraise". Ответ на этот вопрос - есть ф-я предиктор, которая возвращает тройку FCR. Мы можем написать ее просто: if (HS < HScall) return FCR(1,0,0); else if (HS > HSraise) return FCR(0,0,1); else return FCR(0,1,0); Тогда получится, что мы разделили руки оппа на 3 категории. Это очень грубо. Обычно эта ф-я все же не дискретная, т.е. обычно она как-то "проецирует" силу руки в вероятность (интерполируя или еще как то), также она обычно учитывает потенциал для того, чтобы правильно предсказывать колл оппа без силы руки, но по шансам банка, т.е. когда potOdds <= PPot1. А дальше оба подхода делают одно и то же (отличия только в том как реализована ф-я предиктор). Мы перечисляем все возможные комбинации карт оппа и для очередной комбинации спрашиваем предиктор о том, как бы она игралась. Для каждого запроса получаем ответ - вероятностную тройку FCR. Т.к. мы знаем, какое действие совершил игрок по факту, мы берем соотв. значение из тройки (F, C или R) и умножаем на него вес рассматриваемой комбинации (изначально допустим, что вес равен 1). В итоге после очередного хода игрока мы получаем перераспределение весов его возможных комбинаций, которое соотв. нашему предположению о его спектре. Псевдокод: foreach (hand in weightTable) { fcr = Predict(hand, gameContext); weightTable[hand] *= fcr[actualAction]; } На входе: actualAction - действие совершенное оппом, gameContext - игровой контекст, weightTable - спектр карт оппа в виде таблицы весов (1326 значений, вес невозможных = 0). На выходе: обновленный спектр weightTable оппа. При этом Predict - это ф-я предиктор. В первом подходе - это некая эвристическая ф-я, которая принимает на вход HScall, HSraise, вычисленные выше, а также PPot1 и еще любые необходимые параметры для предсказания. Во втором подходе Predict - это обычное обращение к натреннированной описанным выше образом нейронной сети. --- По моему в этом подходе есть большой недостаток в том что границы для коллаб рейза и фолда - очень четкие, если опп руку определенной силы только колит то она никак не появиться в спектре его рейза, а такое ведь возможно. Поэтому мне ближе делить постфлоп руки на какие-то группы типо мусор, дро, монстр и уже для них составлять вероятности фолда колла и рейза. --- "Четкость" границ зависит от того, как ты напишешь ф-ю Predict. Если так, как в примере, то конечно. Если же заложишь туда "шум" и т.п., то для руки с HS < HScall будешь получать, к примеру, FCR(0.9, 0.05, 0.05). Все от тебя зависит. Просто я уже не раз говорил, что, если мы говорим о мат.подходе, то использование "человеческих" определений типа "мусор", TPTK и и т.д. совершенно не приемлемо. Есть четкие мат.характеристики руки - сила и потенциал. Я когда слышу вот это "мусор" там и пр. сразу вспоминаю OPI - "если рейз и у нас две пары", то то, если "2 рейза и у нас пара", то сё - ну што за детский сад И кроме того, не нужно путать предиктор и результирующий спектр оппа, который мы с помощью этого предиктора вычисляем. Проблема не в группировке рук, а в установлении соответствия между ходом игрока в опред. игровом контексте и характеристикой руки, которую он может держать, сделав этот ход. Если мы используем мат. характеристику, то мы можем относительно просто решить эту задачу. Если же мы оперируем понятиями нематематическими, то мат. аппарат применить уже сложнее. В какой момент к примеру ты в своем подходе перестанешь относить "Оверкаты" к руке, с которой опп может сделать бет? Другими словами, какова д.б. вероятность его бета, чтобы "Оверкарты" не попали в его спектр? Кроме того, мы не обязаны играть и мыслить так, как играет наш опп, чтобы выиграть у него. Да и вообще в таком стиле, типа "TPTK делаю то, овера делаю сё", профессионалы не играют. Они как раз таки потенциалом и силой руководствуются. Просто они все эти харакетристики очень точно *чувствуют*. Ауты, шансы банка, обратные шансы, уязвимые руки и пр. - это все про PPot и NPot. Готовые руки - это про HS. --- >>> Первый подход заключается в предположении о том, как опп разыгрывает руки разной силы HS (вещественное число от 0 до 1). Предположение заключается в том, что опп из всего спектра возможных рук сбрасывает low % слабых рук, с mid % средних рук делает колл и с high % сильных рук делает рейз. По моему мнению такой подход (во всяком случае в том виде, в каком я его понял) совсем неверный. Например, рассмотрим игру HU в позиции без инициативы. Опп сыграет колл: - в ситуации WA/WB (Way ahead / Way behind), - с сильными руками в надежде сыграть по стандартной линии "колл флоп, рейз терн" - с монстрами (фулл хаус или флеш) слоуплей Рейз играется: - со слабыми руками в качестве блефа сбросить оппа на флопе или "рейз флоп, бет терн" - для бесплатной карты Есть еще различные варианты розыгрыша слабых рук с ШД-велью + различные варианты розыгрыша для баланса. Но в в целом рейз играется с более слабыми руками, чем колл. >>> Слабость этого подхода имеено в том, что мы изначально сделали такое предположение, которое фактически может быть неверным. Т.е. опп, имея вероятность 85 % конбет, может играть его с младшими руками, а со старшими, напротив, делать чек. Такое предположение мы никогда делать не можем. Особенно когда опп балансирует свои линии. Поэтому на практике такой подход совершенно не применим, имхо. >>> Второй подход. Мы используем историю из огромного кол-ва рук N игроков, каждый из которых Hero, т.е. мы знаем его карты, начиная с начала раздачи Если бы у меня была возможность получать и анализировать полные истории раздач на игроков, то этой темы просто не было бы :). Понятно, что имея информацию обо всех руках можно - и посмотреть, с какой частотой доходят до ШД (WTSD) руки разной силы, - и понять, руки какой силы оппы фолдят. Но ведь такой информации у нас нет. Поэтому и такой подход не применим на практике, имхо. --- >>> Но в в целом рейз играется с более слабыми руками, чем колл. Это абсурд, т.к. противоречит основной теореме покера. Если ты играешь по-другому, то это по-просту ошибка. Именно потому, что рейз в *большинстве* случаев играется с сильными руками, а колл со слабыми, этот подход и работает. Различные миксы, слоуплеи и пр. балансовые линии розыгрыша не оказывают влияния на длинную дистанцию. Кроме того, оба этих подхода на практике используются очень широко. Первый подход реализован в боте Poki от CPRG (стыдно не знать, молодой человек). Описанию второго подхода полностью посвящен труд AN ARTIFICIAL INTELLIGENCE AGENT FOR TEXAS HOLD’EM POKER (Patrick Mccurley, 2009) - одна из самых заметных публикаций последнего времени. >>> Если бы у меня была возможность получать и анализировать полные истории раздач на игроков, то этой темы просто не было бы . Понятно, что имея информацию обо всех руках можно - и посмотреть, с какой частотой доходят до ШД (WTSD) руки разной силы, - и понять, руки какой силы оппы фолдят. Но ведь такой информации у нас нет. Поэтому и такой подход не применим на практике, имхо. Если так говоришь, значит не понял или не внимательно прочел то, что я написал. Нейронная сеть тренируется единожды и описывает некого обобщенного оппонента. Для ее тренироки необходимо скажем истории 20 Hero по 100К рук. Использовать мы будем только истории Hero, где все карты видны с начала. У меня есть история, возьмем историю caramba, твою, bob'a, DGR'а еще 15 Hero. Что это невозможно? ================ >>> Сгенерировал код, который вычисляет EV на флопе против диапазона, а также PPot и NPot до ривера. Как оптимально использовать полученные данные? Может есть таблицы для принятия решения или что-нибудь в этом роде? твою задачу я решил так: 1. Для всех соперников, оставшихся в раздаче, уменьшаем их диапазон: 1.1 Ничего не делал или чек - диапазон остается таким же как на префлопе 1.2 Бет меньше пота или колл меньше пота - оставляем руки пара+ или дро 1.2 Бет больше пота или колл болше пота или рейз - оставляем руки топпара+ 2. Берем список возможных действий. 2.1 Если это колл, то считаем EV против диапазна врага с учетом пункта 1. 2.2 Если это бет или рейз, то смотрим какой процент рук человек сбросит. 2.2.1 На ставку меньше банка уйдут непопавшие руки 2.2.2 На рейз или ставку больше банка уйдут слабее топ пары 2.3 Для бета или рейза считаем EV c учетом фолд-эквити, полученного на предыдущем пункте. 3. Делаем действие в лучшим EV, если такого нет, то фолд. Если реализовать в таком виде, то бот будет гемблить - кидать монетки - потому что в кэше это действие с нулевым EV. Поэтому для турниров добавляем след пункт. 4. Для действий из пункта 2 считаем турнирную долю по ICM в случае проигрыша банка или выигрыша. Это сделат бота осторожнее на ранней стадии для турниров этого хватит. Для кеша надо моделировать оппонентов, а это та еще задачка. ====================== столкнулся с проблемой рассчета эквити против нескольких оппонентов. К примеру, карты игроков: Player 1: AA Player 2: KK Player 3: 22 Эквити АА против КК: выигр. 81.94% проигр. 18.06% Эквити АА против 22: выигр. 82.22% проигр. 17.78% Эквити КК против 22: выигр. 81.81% проигр. 18.19% Как математически вывести к примеру шансы Player 1 выиграть если он играет против Player 2 и Player 3? --- как донести до этих тупездней, что фолд-эквити - самое важное если ты играешь агрессивно, то тебе ваще похеру должно быть все :) ты просто пойми, что фолд-эквити обнуляет (как минимум) все твои ошибки, если ты во всех трекерах косишь под нита с 12/12, то никто не удивится увидев у тебя 82 немастевые. нормальный рег сразу поймет, что играть с тобою бесполезно и никакой диапазон против тебя не посчитать спрашивают - сколько ты заходишь? - да епть, сколько стол позволяет, столько и захожу :) бредятина какая-то - считать диапазоны. ну да, я нит 12%, но хрен кто догадается с чем я режу) никто не может вычислить - у меняя 72 или АА :) и если не пьешь пиво - в покере делать нечего --- вероятность выигрыша против N оппов равна произведению вероятностей V_N=V1*V2*..*Vn только вероятность выигрыша не есть еквити, так что разберись, что именно ты считаешь и еще есть понятие "побочного банка" ... так что не все так просто --- V_N=V1*V2*..*Vn - полная чушь. 88 против АА - 19,538% тогда 88 против АА,АА должна быть 0,19538*0,19538=0,03817 = 3,817% а на самом деле 88 против АА,АА = 22,395%, т.к. тузы мешают друг другу. "Вероятность победы над всеми противниками равна произведению вероятностей победы над каждым из них" - строго говоря, да. Но тот факт, что вероятность победы над конкретным противником меняется от того, сколько противников всего и с какими картами - отбрасывать в покере нельзя. потому что нельзя рассматривать всех противников независимо - у всех в спектре есть повторяющиеся карты, а если так - то вероятность их появления будут меняться и чтобы посчитать общую вероятность выигрыша надо рассматривать сразу всех. --- Это вопрос правильного распределения вероятностей, т.е. построения массива весов карт для каждого оппонента, а не вопрос о правильности формулы. Если отбросить модели и таблицы весов, считая что у каждого равновероятный спектр, то можно просто посчитать Prwin против одного оппа и возвести в степень равную кол-ву оппов, что есть частный случай вышеприведенной формулы. --- Ну посчитай для случая 88 против АА и АА. Возведи вероятность 88 против АА 0,19 в квадрат. А 88 против трех оппов с тузами вообще невозможно (тузов больше нет). И даже для случая против диапазона. 88 против 6,5% (88+,ATs+,KQs,AQo+) = 0,38277, и если два оппа отвечают с одинаковыми диапазонами в твоем случае победа над ними 0,38277*0,38277 = 0,14651, а на самом деле - 88 против (88+,ATs+,KQs,AQo+) + (88+,ATs+,KQs,AQo+) = 0,25199. Мы лучше почти в два раза. Твоя формула для случая - кинуть решку ровно 3 раза подряд. Для независимых случаев. Тут она неверна. Вот если бы я играл ТОЛЬКО с первым оппом на этих картах 100 раз, и со вторым тоже 100 раз. Тогда вероятность победить обоих равна произведению. А тут они мешают друг другу своими совпадающими картами. --- Окуда берется это "на самом деле"? Или оно вовсе не на самом, а просто так? Посчитаем предельно тупо: У второго противника 2 карты, в дипазоне участвуют от 8 до A - всего 7*4=28 карт. Степень зависимости 1/14. Итого 0,38277*(0,38277*(1+1/14)) = 0.157 Откуда 0,25199? Формулу в студию! --- Я вообще не понимаю зачем еще что-то считать, имея на руках 88, если в поте 3 оппонента, каждый из которых с высокой вероятностью может иметь АА. Нам не нужно 3, нам достаточно одного, чтобы сразу фолд. --- здесь обсуждают как правильно считать эквити, а не как играть 88 против АА