Пилю программку по обсчёту китайского покера

Последний пост:26.11.2023
22
1 20 21 22 23 42 114
  • Цитата (Galax @ 6.12.2019)
    Наконец можно попробовать комбинаторикой (тут нужны хорошие математические знания). Т.е для каждой незаконченной линии нужно посчитать вероятность собрать различные комбинации(каре, фуллхаус, флеш, трипс, и т.д.), зная какие карты вышли и на основании этих данных оценить приблизительно EV руки (хотя бы очень грубо). Это позволит выбирать лучший вариант когда он очевидный (к нашей паре пришел трипс, или к флеш-дро пришла карта флеша), а в остальных случаях выбирать какой-то вариант более-менее разумный.

    Примерно это я и делаю при раскладе стартера. Посчитать для каждой линии возможные комбы элементарно (очень быстро).
    Но тут есть проблема, точней замечание: как только я построю комбу внизу, эти карты уйдут из колоды и все вероятности в миде и топе поменяются.
    Я так и делаю (First5a): перебираю все возможные варианты внизу, выкидываю эти карты из колоды, перебираю все варианты в миде, выкидываю и из оставшихся перебираю комбы в топе. И считаю все это. Нахожу вероятности всех бонусов и скупов. Перемножаю их с очками за скуп и фанту и получаю оценку позиции.
    Цитата (Galax @ 6.12.2019)
    В следующей сдаче я в среднем соберу столько-то очков(например 6), а при фентези в среднем 14, значит фентези мне принесет допольнительно 14-6=8 очков

    Это логично и элементарно добавить еще выбор этого варианта. Можно даже предусмотреть в проге менять это число самому.
    Цитата (DmNass @ 6.12.2019)
    А для двоих можно считать? Что, если я не заполню картами поле одного из оппонентов? Это будет расчет на двоих или просто некорректный расчет?

    Проге пох что там вверху. Просто эти карты выкидываются из колоды. Если не будет карт у оппов - будет считать, что игрок один.
    В расчетах имеет значение только карты в своей руке. Новые карты. И колода. Линии и комбинации оппов не учитываются.
    Сообщение отредактировал Jak - 7.12.2019, 12:27
    34/314
    Ответить Цитировать
    0
  • Цитата (c00l0ne @ 6.12.2019)
    Может содержать руткиты, это программы скрытые от антивируса... Но дающие полный контроль над вашим компьютер... Например могут смотреть за вашим экраном и перехватывать пароли

    А вот ICMizer ты качаешь, у тебя есть гарантия, что у тебя ничего не воруют, не смотрят твой экран? Даже если ты используешь программу с сайта, не качаешь ее себе на комп. Или другие программы с разных сайтов, в том числе и тут в магазине.
    Какая гарантия? Слово купеческое?
    35/314
    Ответить Цитировать
    0
  • Цитата
    Вариант считать не тройки, а двойки, проходил. Считает быстро, но результаты очень примерные. Проверял такое: беру двойку, и из колоды убираю по очереди все остальные карты (имитирую тройки). И проверяю результат. Результаты разнятся примерно на 12%. И я решил, что для более точного решения этот путь не подходит.


    Двойки я считаю так. Заранее рассчитываю EV для всех возможных пар. Далее в цикле перебираю все возможные тройки. Из одной тройки мы можем выбрать три двойки, сравниваем EV этих трех пар (они уже посчитаны и их не нужно повторно считать) и выбираем пару с наибольшим EV. Для этой лучшей пары просто увеличиваем счетчик ее использования. После перебора всех вариантов троек мы получаем сколько раз каждая пара выбиралась как лучшая. Пара с наибольшим EV будет выбираться чаще всего, пара с наименьшим не будет выбираться вообще. Далее считаем среднее EV - перемножаем EV каждой пары на ее счетчик и делим на суму всех счетчиков. Это и есть искомое EV данного расклада.
    13/52
    Ответить Цитировать
    0
  • Смотри:
    Цитата (Galax @ 7.12.2019)
    Двойки я считаю так. Заранее рассчитываю EV для всех возможных пар. Далее в цикле перебираю все возможные тройки.

    Тебе дадут 3 карты. Из них можно сделать 3 пары. Тк ты не знаешь, что придет, ты считаешь EV для всех возможных пар, а кикер? третью карту ты выкидываешь из колоды? Похоже нет, т.е. она в колоде и может участвовать в следующих подъемах. И кажется, что ее влияние мало. Но это не так.
    Я же писал. Третья карта очень влияет, особенно если она может приложиться куда-нить в линии. Либо может помочь собрать фанту.
    Попробуй проведи эксперимент: возьми конкретную пару АВ, по очереди выброси из колоды остальные карты по очереди Сi, как бы сымитируй тройки АВС (С-по всей колоде). В твоем предположении EV(-Ci) всех i будет одинаково , но они разные. Разброс EV +-10% минимум.
    36/314
    Ответить Цитировать
    0
  • Интуитивно мне кажется, что влияние кикера очень незначительно. Ведь мы всегда выкидываем худшую из трех карт. Ситуации когда нам пришли сразу три важных карты и нам придеться пожертвовать одной из них, мне кажется, будут очень редко в процентном отношении ко всем остальным случаям (ну пусть 1%) и на финальное EV будут влиять незначительно. Но по-хорошему, нужно бы провести сравнительные тесты, чтобы это проверить.
    P.S. А можешь навскидку прикинуть какая вероятность получить три карты одной масти, или три карты одного номинала (ААА например)?
    14/52
    Ответить Цитировать
    0
  • Цитата (Jak @ 7.12.2019)
    А вот ICMizer ты качаешь, у тебя есть гарантия, что у тебя ничего не воруют, не смотрят твой экран? Даже если ты используешь программу с сайта, не качаешь ее себе на комп. Или другие программы с разных сайтов, в том числе и тут в магазине.
    Какая гарантия? Слово купеческое?


    Если воруют это им дорого обойдётся...
    75/882
    Ответить Цитировать
    0
  • Цитата (Galax @ 7.12.2019)
    мне кажется, будут очень редко в процентном отношении ко всем остальным случаям (ну пусть 1%) и на финальное EV будут влиять незначительно

    ну что за детский сад
    откуда 1%? пусть осталось в колоде 30 карт. Какова вероятность прийти нужной? не 3.3%? А при 20 картах в колоде вообще 5%, а таких карт может быть больше 2-х.

    неужели сложно проверить? возьми любые 2 карты и предположи, что пришли остальные по разу (выкинь их из колоды) и увидишь что EV разобьется на несколько групп по влиянию кикера.

    Кстати это легко проверить в новой версии. Меняешь кикер и смотришь как меняется EV при Full-расчете.
    Сообщение отредактировал Jak - 7.12.2019, 20:38
    37/314
    Ответить Цитировать
    0
  • Цитата (c00l0ne @ 7.12.2019)
    Если воруют это им дорого обойдётся...

    Ага, ты их напугал...

    Подготовил промежуточную версию. Большие изменения при раскладывании 3 карт.
    # Считает аналитически полным перебором при своих 7, 9, 11 картах. Распараллелил расчеты на потоки, считает быстро.
    # Сделал МК так: задаем кол-во циклов на верхнем уровне, глубже перебираем 50% от возможных циклов (потому не надо брать на верхнем уровне большое число попыток, экспериментировать с 50). ХЗ может много, может надо считать 30%, может 10%.
    # Добавил режим "Combo" - считаем вначале МК, (лучше ставить небольшое число попыток) потом лучшие 10 пересчитываем в Full-режиме.
    # По желанию Galax'а добавил 8 очков за бонус.
    # Стартер не трогал.
    # Кнопки активируются только в момент возможности счета при вводе карт.

    Версия 0.2
    SHA-1 943E79400253FE60F4FE9D90CB3EBE3A399EC6A8
    MD5 17A991F1CB2911ED04E795BAC7F21FB5
    38/314
    Ответить Цитировать
    0
  • Возьмем любимую задачку Билли, тут полный перебор, результаты должны быть идеально точны. Могут отличаться от старых, т.к. за бонусы берем не 14, а 8 очков, как хотел Galax.

    Теперь рассмотрим вариант 6, самый верхний слева, те лучший. Для него точный ответ: 7,345896841b.
    И для него будем менять третью карту из колоды.
    Всего будет 33 варианта, все перебирать лень, несколько посмотрим.

    справа в каждой строчке третья карта из колоды.
    Заметим, что т.к. мы убили флеш в миде, масть карты не влияет. Видно по , и ,. А вот по достоинству все кикеры отличаются, какие-то тянут ответ вниз, какие-то вверх.
    #Galax, ты какой ответ будешь брать для пары ?

    А если флеш не убивать еще больше разброс.

    Тут, если флешовую карту убрать из колоды, EV падает, или нужную вниз для фула убрать - тоже EV падает. А вот если убрать посторонку - то EV растет. Как это все предусмотреть в общем случае?

    Вот, что должен ты получить, если посчитать только двойку :
    для обоих вариантов (пятерку пришлось положить третьей, прога требует 3 карты в подъеме).

    Точные варианты для :
    6: 230, 7,345896841b; 89,453s
    3: 130, 5,035729404b; 86,141s

    Как из 6: 230, 7,742420240b; получить 6: 230, 7,345896841b; ? Скажешь ошибка невелика? Ну, это только тут, кто знает какова ошибка в других вариантах троек?
    39/314
    Ответить Цитировать
    0
  • Вот пошла конструктивная дискуссия...
    Во-первых, для чистоты эксперимента, ты пересчитай все 33 кикера, но не только для расклада 230, а для всех раскладов. Например, для варианта 4,8,2 пара 8,2 делает готовый фуллхаус внизу, и программа выберет лучшим вариантом (скорее всего) эту пару. Поэтому кикер 2-ка никогда не будет. Возможно и еще для некоторых кикеров будет такая ситуация (особенно интересно мне, как программа разложит при кикере Q - рискнет спаровать вверху QQ, или нет, но этот расклад я хочу обсудить более подробно позже). Вот теперь наглядно видно, что кикер может быть только более слабая (незначащая) карта,а не все 33 возможных кикера, иначе он становится главной картой.
    Во-вторых, когда я рассчитываю расклад я перебираю все 27 вариантов - учитываю все три карты ( и кикер тоже). Но начиная со второй глубины рекурсии мы уже считаем не конкретный расклад а среднее EV всех допустимых раскладов. Ты перебираешь все возможные тройки и считаешь для каждой из них EV, а далее высчитываешь среднее EV для всех них. И вот только это среднее EV имеет значение - именно его мы используем для дальнейших расчетов. Я тоже считаю среднее EV всех раскладов, но для этого упрощаю счет и считаю только EV пар. Так вот, моя гипотеза, что мое упрощенное среднее не сильно отличается от твоего точного среднего. Ты сам видел, что некоторые кикеры повышают EV, некоторые понижают - а мы считаем среднее и усредненное значение будет очень близко к моему упрощенному значению. Мы жертвуем небольшой точностью, но выигрываем очень значительно по времени.
    15/52
    Ответить Цитировать
    0
  • Продолжение дискуссии...
    Посмотрел расчет этой же ситуации при фентези EV = 14. Результат 9.3 вместо 7.3. Разница в 2 очка намного более существенна, чем пренебрежение кикером дающее погрешность в 0.2 очка. А еще мы упрощаем и не учитываем руку оппонента - а это может стоить нам при скупе - очки за скуп могут быть от 0 до 18. Попробуй посчитай этот же расклад для крайних значений (0 и 18) - какова разница будет? Я веду к тому, что правильный выбор значений фентези EV и скуп EV имеет более важное влияние на расчет, чем пренебрежение кикером.
    Но в большинстве случаев даже пренебрежение всеми этими значениями EV дает правильный ответ. Почему? Да потому, что нам не важно абсолютное значение EV, нам важно какой из 27 вариантов разложения имеет большее EV. Для вышеприведенного расклада 6-й вариант 230 всегда будет лучшим независимо от значений EV, а второй по значимости вариант будет отставать от первого приблизительно на одну и туже величину. Если бы это было справедливо для всех раскладов, то можно бы было вообще не париться о фентези EV и EV при скупе. Но это нужно подтвердить или опровергнуть при дополнительных тестах.
    Вернемся к предыдущему раскладу и возьмем кикером Q. Возможно прога посчитает что стоит рискнуть и положить даму вверх для фентези. Я бы рекомендовал провести тесты с таким раскладом для различных крайних значений EV - для фентези EV выбирать 8 и 14, для скупа 0-18. Есть вероятность, что для крайних вариантов программа выберет различный лучший ответ. Если это так, то мы приходим к выводу, что для некоторых раскладов значение этих EV имеет значение и чем мы точнее будем знать эти значения, тем точнее будет наш ответ - какой вариант разложения из 27 будет лучшим.
    Если даже для этого расклада тест не подтвердиться, то это не означает, что таких раскладов нет впринципе. Я бы очень хотел увидеть такой экстремальный расклад - когда при одних значениях EV стоит идти на фантазию, а при других нет.
    16/52
    Ответить Цитировать
    0
  • Jak, хотел прогу поразбирать, но заметил что у тебя нету мертвых карт, если не сложно сделай

    Мертвые это те Карты которые убираются из колоды... И сохранить и загрузить раздачу можно?
    76/882
    Ответить Цитировать
    0
  • Цитата (c00l0ne @ 9.12.2019)
    Мертвые это те Карты которые убираются из колоды... И сохранить и загрузить раздачу можно?

    Чьи мертвые карты? Наши или оппов?
    Про наши есть в #377, про оппов - я их не знаю и считаю, что они в колоде. Или ты можешь их угадывать?
    В #409 как раз на этом месте.
    А вообще для проги все карты на позиции оппов как бы мертвые, можешь смело туда кидать все чего нет в колоде.

    Сохранить/загрузить позицию можно. Правда только одну, не охота заморачиваться сохранять кучу поз. Хотя никаких проблем не вижу сохранить хоть сколько поз.
    40/314
    Ответить Цитировать
    0
  • Jak, ок
    Вечером раскритикую
    77/882
    Ответить Цитировать
    0
  • Цитата (c00l0ne @ 9.12.2019)
    Jak, ок

    Что, ок? Нашел мертвые карты или уже не надо?
    Цитата (c00l0ne @ 9.12.2019)
    Вечером раскритикую

    А кому нужна твоя критика?

    Ты хочешь что-то лучше предложить? Или раскритиковать расположение кнопок? Или программа неверно считает?

    Вот месяц назад не было никакой программы даже для приблизительного расчета по китаю. Я предложил свой вариант, возможно сырой, программы для расчетов. У людей появилось хоть что-то. Тут появляешься ты и критика. Видимо тебе не выгодно чтобы кто-то научился играть в китай.
    Вот я в китай не играю и мне пох, пусть все научатся играть.
    41/314
    Ответить Цитировать
    0
  • Jak, ок не буду
    78/882
    Ответить Цитировать
    0
  • Цитата
    Вот я в китай не играю и мне пох, пусть все научатся играть.

    А регам не пох
    Для регов запилю видос
    79/882
    Ответить Цитировать
    0
  • Всем привет :)

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

    Подъёмы считаем так:
    0. Составляем (выбираем из базы) все комбинации, которые можно составить с учётом мертвых карт.
    1. Оцениваем матожидание для каждого ряда отдельно. Можно в процентном соотношении типа мусор/пары/.../стритфлеш умноженное на вес комбинации.
    2. Добавляем карты и считаем новые ожидания.
    3. Самый сложный момент: делаем функцию оценки. Например, комбинации с максимальным мат ожиданием + скуп не более 30%.

    Точность можно проверять на когда надо разложить 4й подъем: уже можно оценить на глаз по аутам и есть достаточная доля неизвестности. На более ранних этапах сравниваем с Монте-Карло.

    Как итог можно получить фунционал достаточной точности для определения раскладов на ранних подъемах с достойным быстродействием.
    1/9
    Ответить Цитировать
    0
  • Ребятушки, для меня программирование - тоже своеобразное хобби, не буду лукавить. Так что подождите чуток, есть пару вопросов/предложений, особенно к Jak, просто не хочу дискутировать без повторения его результатов. А для этого надо записать все комбинации в файл(+ определять их поиском по массиву, ну, то есть по тому же файлу).
    Молодцы, что продолжаете разборы, мотивируете меня программировать ))
    170/741
    Ответить Цитировать
    0
  • Jak, один вопрос всё-таки задам. Ты где-то упомянул, что программа не хочет(не любит) класть в топ что-то старше(!) валета. Плюс ещё я заметил, что вариант положить к даме в топ у тебя по МО выгоднее, чем в мидл или вниз. Но ведь таким ходом мы лишаем себя шансов собрать фантазию на королях или тузах, что очень подозрительно(по крайней мере, для меня)
    Я вот долго думал...и единственный ответ, который мне приходит на ум...не считает твоя прога комбинации. В том смысле, что на 95% она получает руки в виде (карта хай) - (карта хай) - (карта хай\пара)
    Только в этом случае валет в топе может заруинить всю руку, если вдруг(!) в мидл у тебя будет 10хай
    Так же объясняется и 4ка...Прога надеется собрать в мидл комбу не младше хай, а в крайнем случае кикер не так страшен.
    Я не хочу обвинить тебя в неправильном коде...или ещё чём-то...
    Но результаты надо как-то объяснять. Не важно, правильные они или нет. Истинные или нет.
    Ну ещё и один вопрос, уж коли начал писать.
    А ты проверял, в скольких случаях из твоих 100000 рука выходит на фантазию?
    Все, да и ты, знают приблизительный ответ. Не мог бы привести что даёт прога?
    171/741
    Ответить Цитировать
    0
1 20 21 22 23 42 114
3 человека читают эту тему (3 гостя):
Зачем регистрироваться на GipsyTeam?
  • Вы сможете оставлять комментарии, оценивать посты, участвовать в дискуссиях и повышать свой уровень игры.
  • Если вы предпочитаете четырехцветную колоду и хотите отключить анимацию аватаров, эти возможности будут в настройках профиля.
  • Вам станут доступны закладки, бекинг и другие удобные инструменты сайта.
  • На каждой странице будет видно, где появились новые посты и комментарии.
  • Если вы зарегистрированы в покер-румах через GipsyTeam, вы получите статистику рейка, бонусные очки для покупок в магазине, эксклюзивные акции и расширенную поддержку.s