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

Последний пост:26.11.2023
22
1 17 18 19 20 39 114
  • Ну, и пока я не приступил непосредственно к кодированию, следует обсудить, как же всё-таки раскладывать стартер.
    Если внизу нацелиться на фулхаус, то в мидл можно будет собирать комбинации младше(фул младше, флаш, стрит, и т.д.)
    Короче, "расстояния" придётся считать до всех готовых рук.
    Если учесть, что в "словаре" около 2,5млн слов(комбинаций), то и здесь можно упереться в производительность(учитывая кол-во способов разложения 5 карт по 3ём линиям).
    И вот тут c00l0ne предложил вполне здравую мысль(воспользоваться которой в рамках предыдущей модели не представлялось возможным): не считать расстояния до ВСЕХ готовых рук, а либо ограничить перебор самыми "очковыми"(фул+флаш, фул+стрит), либо просто обрубать перебор по произвольному кол-ву готовых рук(1млн, 2млн и т.д.) пока будет хватать времени.
    Этакий метод Монте-Карло в рабоче-крестьянском понимании.

    ЗЫ К сожалению, с пятницы до понедельник работаю, с удовольствием остался бы дома попрограммировать. Если у кого есть возможность оказать финансовый донат - прошу в личку.
    155/741
    Ответить Цитировать
    0
  • Цитата (БиллиУбили @ 21.11.2019)
    учитывая кол-во способов разложения 5 карт по 3ём линиям).


    если отбросить варианты когда 3 карты вверху, всего 192 варианта (когда вверху 0 и 1 карта, остальные внизу перебором).

    Я делаю так:
    берем какой-то вариант, пусть низ-а1,а2, мид а3,а4, верх а5. перебираю ВСЕ 2,6кк пятикарточных комб в которых есть наши карты внизу и в миде. Собираю их силу (каре, фулл, флеш и т.д.) все это считаю по линиям. Внизу беру только до АА+, все пары ниже отбрасываю. В миде до КК+, вверху беру все пары и выше до сетов.
    Потом считаю сколько комб по линиям собирается по правилам китая, и сколько скупанется. Те, которые правильные, для них считаю кол-во бонусов, суммирую, те, которые скупанулись, тоже подсчитываю, отниму потом 12 очков за скуп (это не много). Все это дело суммирую и делю на кол-во всех вариантов и получаю оценку для этого варианта.
    На самом деле не так много расчетов, даже полным перебором.
    Причем, когда я рассматриваю какую-то комбу снизу, я убираю из мида и верха все комбы, которые содержат карты снизу, так уменьшается кол-во комб в миде и вверху. И так для всех комб снизу. Практически считаю только похожие комбы, фулл на фулл, стрит на стрит. Те, которые разнятся сильно (типа фулл против флеша) вообще считаются кучей, они же все меньше, чего их проверять все.
    Все варианты С(47,12) конечно перебрать тяжело, но Монте дает хорошие результаты. 100к вариантов по 12 карт считает за 8 сек, разброс сотые доли бонуса.

    ЗЫ. Сейчас попробовал 1кк вариантов - 74 сек. Разница в оценке по бонусам - 0.1%. Так что Монте-Карло - рулит!!!
    10к вариантов - 1 сек, погрешность 0,4%.

    А чтобы не перебирать все 192 варианта, я вначале считаю их все по 1000 вариантов, отбраковываю все плохие по набранным бонусам, беру лучшие 10 и считаю их уже по 10к вариантов и рассматриваю лучших 2-3. Всего делов на 30-35 секунд. Через 35 сек имею 10 лучших вариантов расклада первой пятерки.
    13/314
    Ответить Цитировать
    0
  • Интересно, если выложить прогу по китайскому в общий доступ, это повредит или поможет игрокам?
    14/314
    Ответить Цитировать
    0
  • Jak, "Люди - не обучаемые свиньи" (с) Инвокер.
    2/14
    Ответить Цитировать
    1
  • Цитата (Jak @ 26.11.2019)
    Интересно, если выложить прогу по китайскому в общий доступ, это повредит или поможет игрокам?

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

    Цитата (Jak @ 21.11.2019)
    Всего делов на 30-35 секунд. Через 35 сек имею 10 лучших вариантов расклада первой пятерки.

    Тебя не поймёшь(возможно, я - тупой). То у тебя 35 сек, то
    Цитата (Jak @ 21.11.2019)
    А если я один - то даже не пробовал, наверно пару суток.

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

    2 ALL
    Сижу, обдумываю расстояние Расстояние Дамерау — Левенштейна(ссылка на вики не копируется)
    Функция вроде не сложная, можно запрограммировать.
    Одного я не пойму:
    если я закодирую каре девяток словом "ABCD", то ведь будет разброс расстояний для всех возможных заполнений линии, так? я могу собрать ЕDCBA, а это 1+3+2+1. А если соберу ABCDE - то 0(ну, или 1, если удалить Е)
    А что будет с незаконченной линией, например 3мя девятками? Тоже расстояние плавающее, а не строго 2(добавить 1 девятку и 1 произвольную карту).
    Какие будут соображения?
    156/741
    Ответить Цитировать
    0
  • БиллиУбили, мы же по Скайпу общались я тебе сказал что сделать... Прошло пол года...

    Расстояние Дамерау — Левенштейна
    67/882
    Ответить Цитировать
    1
  • Цитата (Jak @ 26.11.2019)
    Интересно, если выложить прогу по китайскому в общий доступ, это повредит или поможет игрокам?


    Зачем если можно продать...
    68/882
    Ответить Цитировать
    0
  • c00l0ne, друг, если у тебя по сути есть какие возражения - пиши, не стесняйся.
    Да, мне нравится работать со строками, так для меня интуитивнее. Примеры поиска по словарю показывают, что там результаты достаточно быстрые. К тому же, нет никакой разницы разницы, как закодировать комбинации: в виде словаря или в виде таблиц
    Расстояние Левенштейна — наверное, самый известный и широко используемый способ сравнить две строки


    Цитата (БиллиУбили @ 27.11.2019)
    А что будет с незаконченной линией, например 3мя девятками?

    тут я имел в виду, что расстояние между FGH и ABCD(каре девяток) будет 4(3 замены + 1 добавление), что сравнимо с расстоянием между ABCD и ЕDCBA
    наверно, стоимость удаления стоит положить равной 1000
    157/741
    Ответить Цитировать
    0
  • Цитата (БиллиУбили @ 27.11.2019)
    Тебя не поймёшь(возможно, я - тупой). То у тебя 35 сек, то


    Возможно ты зря сомневаешься про себя. Почему куски из РАЗНЫХ текстов сравниваешь?

    Пару суток - это полный перебор всех троек, а 35 сек после монте-карло.

    Цитата (БиллиУбили @ 27.11.2019)
    Сижу, обдумываю расстояние Расстояние Дамерау — Левенштейна(ссылка на вики не копируется)


    А простое битовое сравнение не подходит?

    Между любыми комбинациями расстояние в одно сравнение двух чисел.

    Цитата (c00l0ne @ 27.11.2019)
    Зачем если можно продать...


    Сделал вывод для себя (хотя это не новая мысль, Кравченко лет 5 назад писал), китайский - что-то сродни рулетке, автоматам. Если карта не идет, никаким скиллом ее не вытянешь.
    Писал прогу для себя, щас надоело ее улучшать, не вижу смысла. Даже если я хожу всегда максимально правильно, это не спасает от проигрыша.
    Готов просто выложить в общий доступ, пусть люди улучшают свой "скилл". Конечно, если это можно монетизировать, я не против. Но лень этим заниматься.
    Щас лишнее уберу из проги и выложу тут.
    15/314
    Ответить Цитировать
    0
  • Цитата (Jak @ 27.11.2019)
    Если карта не идет, никаким скиллом ее не вытянешь


    так-то любой карточной игры касается
    7/9
    Ответить Цитировать
    0
  • Jak, напиши как алгоритм работает... Если нормальный может я займусь и допилю ее до идеала...
    69/882
    Ответить Цитировать
    0
  • Jak, выкладывай. Ждем)
    4/4
    Ответить Цитировать
    0
  • Цитата (fergus_crowley @ 27.11.2019)
    так-то любой карточной игры касается


    нет, не любой. тут нет кнопки "фолд". т.е. в холдеме, если не идет карта, могу сбросить карты и ждать лучшей. тут же не так, не идет карта, засадишь весь стек, типа должен коллировать любую ставку. ВСЕГДА! Кнопки "фолд" нет!

    Цитата (c00l0ne @ 27.11.2019)
    Jak, напиши как алгоритм работает... Если нормальный может я займусь и допилю ее до идеала...


    алгоритм чего?

    Программа делает много разного. С ней я считал фантазии для 14, 15 и т.д. карт, чтобы узнать насколько выгодно стремиться на фантазию, по шансам ли...
    Может сейчас почти мгновенно посчитать любую фантазию от 14 до 17 карт. Причем несколько вариантов, бывает, что повтор фантазии хуже, чем просто фантазия, без повтора (типа разбить каре внизу, чтобы собрать больше бонусов).
    Можно ввести карты свои и оппов, вышедшие карты и новые, и она посчитает куда, что положить и даст шансы в бонусах (все в зависимости от бонусов за скуп, можно 0,-6,-12 за скуп). Это при своих 5,7,9,11 карт.
    Т.е. напр, имеем 7 карт и карты оппов. Пусть осталось 27 карт в колоде (хотя это не имеет значения для МК). Прога считает каждый из 27 вариантов положить 3 карты по линиям, теперь у нас уже 9 карт в линиях. Теперь отсюда 10000 раз берем тройки из оставшихся 24 карт, кладем все 27 вариантов по линиям, стало 11 карт в линиях, дальше полным перебором по 3 карты до 13 карт. Можно больше попыток, все зависит от нужной точности. При 10000 вариантов точность 0,1 бонуса. Время счета 2,7 сек, все 27 вариантов положить первую тройку.

    При своих 5,7 карт считает по МК (монте-карло) достаточно большое кол-во попыток. Для 9,11 полным перебором.

    Еще может раскладывать первые 5 карт, все 192 варианта (вверху 0,1,2 карты из пяти). Тройку вверх не рассматриваю как перспективный вариант.
    Есть вариант для полного перебора (если кому нужна академическая точность), есть МК с любым кол-вом попыток.

    Пробовал по 2 карты добавлять из колоды.
    По 12 карт сразу (и из них выбирал лучшие 8 для линий, считал бонусы и отсюда делал вывод какой расклад лучше). Типа считал шансы собрать внизу какую-нибудь комбу, потом в мид меньшую и в топ еще меньше, считал бонусы собранных комб, все это суммировал и делал выводы.

    Много чего еще есть.

    Какой алгоритм ты хочешь допилить?
    16/314
    Ответить Цитировать
    0
  • Цитата (Jak @ 27.11.2019)
    А простое битовое сравнение не подходит?

    Тут спору нет. Но хотелось решить задачу академически. Битовое сравнение, как мне кажется, будет лишь оптимизацией общего алгоритма.
    Цитата (Jak @ 27.11.2019)
    Между любыми комбинациями расстояние в одно сравнение двух чисел

    честно говоря, я планировал работать в пространстве комбинаций пара+, ибо какой смысл сравнивать Jхай с 10хай?
    Хотя, он этого всё равно не уйти - сравнение понадобится для определения скупа, например(когда оба ничего не собрали в топ/мидл)

    Цитата (Jak @ 27.11.2019)
    Пару суток - это полный перебор всех троек, а 35 сек после монте-карло.

    Блин, убил ты интригу. Была надежда, что лишняя 3яя карта даст возможность уйти с магистральной дороги. Ан, нет. Как ни крути, всё сводится к набору комбинаций. У тебя же результаты для разных расчётов совпадают?

    Цитата (Jak @ 27.11.2019)
    Какой алгоритм ты хочешь допилить?

    Да уж...допиливать и нечего. Была надежда уменьшить МО руки с одновременным уменьшением дисперсии. Не думал об этом?
    ЗЫ Реши, плиз, пример из треда https://forum.gipsyteam.ru/index.php?viewtopic=142685&view=findpost&p=5978018
    обязательно ли класть 8 вниз или таки можно бахнуть 4 и 3 в мидл
    Каким будет различие в МОруки?

    ЗЫ2
    Цитата (Jak @ 27.11.2019)
    Сделал вывод для себя (хотя это не новая мысль, Кравченко лет 5 назад писал), китайский - что-то сродни рулетке, автоматам. Если карта не идет, никаким скиллом ее не вытянешь.

    Ты забываешь об одном: твой противник ровно в такой же ситуации. Даунстрики могут тянуться полгода, год...надо лишь стиснуть зубы и потом столько же времени разьёбывать оппонентов на апстрике
    158/741
    Ответить Цитировать
    0
  • Jak, карты сброса ввести, а если мы их не знаем? Алгоритм процесса игры интересует само собой, как машина из полного перебора отсеивает лишнее...
    70/882
    Ответить Цитировать
    0
  • Jak, есть ещё "улучшение"
    По раскладу 2 карт противником однозначно идентифицируются 4..5... и более карт, которые ему точно не пришли на этом подьёме. Иначе бы он её(их) не сбросил, а положил бы в руку.
    А если они ему не пришли, то они по-прежнему в колоде. Это можно учитывать
    159/741
    Ответить Цитировать
    0
  • Цитата (Jak @ 21.11.2019)
    ерем какой-то вариант, пусть низ-а1,а2, мид а3,а4, верх а5. перебираю ВСЕ 2,6кк пятикарточных комб в которых есть наши карты внизу и в миде. Собираю их силу (каре, фулл, флеш и т.д.) все это считаю по линиям. Внизу беру только до АА+, все пары ниже отбрасываю. В миде до КК+, вверху беру все пары и выше до сетов.
    Потом считаю сколько комб по линиям собирается по правилам китая, и сколько скупанется

    Друг, что-то я никак не пойму твой алгоритм. Ты учитываешь тот факт, что вероятность закончить комбинацию(за оставшиеся подьёмы) зависит от кол-ва карт, которые уже лежат в линии?
    Возьмём, например, стартер
    Ну, пусть мы положим в мидл, а в топ.
    А что делать с ой?
    Если оставить низ пустым, то это вроде здорово: туда гипотетически влезут все комбинации старше , однако класть туда придётся 5(!) карт из 12, которые придут.
    А если таки положить ку вниз, то стрит-флаш нам уже не собрать, но зато мы можем зацепиться за стрит(уже не за любой, а обязательно с ой, флаш, опять же не любой, а по масти и и т.д.) Другими словами, хотя кол-во успешных комбинаций сократится, но для их завершения нам "подойдут" уже 4 карты из 12, которые придут.
    То есть, это немного разные вероятности.
    Ты учитываешь этот момент?
    И ещё раз повторю предыдущий вопрос: решения МК и полным перебором(по тройкам) у тебя совпадают?
    160/741
    Ответить Цитировать
    0

  • Вот, что насчитала прога.
    Тут обсчитал лучших 7 вариантов, посчитал еще 6 вариантов, но там лучший бонус - 0,467.

    Цитата (БиллиУбили @ 27.11.2019)
    Ты забываешь об одном: твой противник ровно в такой же ситуации. Даунстрики могут тянуться полгода, год...надо лишь стиснуть зубы и потом столько же времени разьёбывать оппонентов на апстрике

    Ну да, автомат и рулетка тоже отдает, "говорят".

    Цитата (c00l0ne @ 27.11.2019)
    Jak, карты сброса ввести, а если мы их не знаем?

    Ну свои в сбросе же мы знаем?

    Цитата (БиллиУбили @ 27.11.2019)
    По раскладу 2 карт противником однозначно идентифицируются 4..5... и более карт, которые ему точно не пришли на этом подьёме. Иначе бы он её(их) не сбросил, а положил бы в руку.
    А если они ему не пришли, то они по-прежнему в колоде. Это можно учитывать

    Я их и так считаю, что они в колоде.
    17/314
    Ответить Цитировать
    0
  • Цитата (БиллиУбили @ 28.11.2019)
    Ты учитываешь этот момент?

    Разумеется. Только прога не рассуждает так: а соберу ли я стрит? и фулл?
    Она тупо кладет пять карт. Ну пусть КК, АА, 7. Берет любые три карты из колоды и кладет их на свободные места. Берет еще 3 карты из колоды, кладет их. И так в рекурсии до заполнения всех мест. В конце получается, что заняты картами все 3 линии. Считаем бонусы по правилам китая. Суммируем их. Если скуп - отнимаем скуп (можно выбрать 0, -6, -12) от суммы. И так складываем все варианты. Считаем попутно кол-во таких вариантов. Все сложили, поделили на кол-во вариантов - вот и ответ! Т.е. учитываются и хорошие расклады и скупы. Если скупы перевесят - значит плохой расклад.
    Цитата (БиллиУбили @ 28.11.2019)
    И ещё раз повторю предыдущий вопрос: решения МК и полным перебором(по тройкам) у тебя совпадают?

    Разумеется нет. Перебрать все варианты - это только для академической точности. Например всех троек на первом подъеме, когда в колоде 47 карт - 19'312'117'754'529'600 = С(47,3)*С(44,3)*С(41,3)*С(38,3). Тут еще надо добавить разветвления на каждом этапе, ведь карты можно положить от 6 до 27 разных вариантов, итого сумасшедшая сумма. Если я посчитаю 100'000 вариантов - это крохи от всех вариантов. Миллиардные доли процента. Но если карты брать одни и те же для разных раскладов, можно их сравнивать.
    18/314
    Ответить Цитировать
    0
  • Цитата (Jak @ 28.11.2019)
    Ну да, автомат и рулетка тоже отдает, "говорят".

    видишь ли, в чём дело. Ты сейчас расписался в полной неработоспособности своей проги(без обид). Если бы она давала тебе хотя бы +0,5 куша с раздачи, у тебя ни то, что минусового месяца не было, ты бы уже миллионером был


    Цитата (Jak @ 28.11.2019)
    Тут обсчитал лучших 7 вариантов

    и сразу вопрос. Что такое -6 за скуп я ещё понимаю, но что такое -12? Это усреднённый минус от скупа, когда соперник собрал просто руку? руку с фантазией?

    Вопросы к 3ему, 4ому и 5ому вариантам. Как может вариант 3(4) в топ обгонять вариант 3и4 в мидл?
    В колоде 3 живых дамы, положив 3(4) в топ, мы пролетаем с подъёмом ()(). Ок, мы и так бы не положили даму. Но не положив 3(4) в мидл, мы остались без возможности собрать 2 пары. А почему? Ведь шансы на фантазию не уменьшились, неужели флаш в мидл "дороже" фантазии? Ну это так, размышления "на пальцах", возможно, я заблуждаюсь.

    Цитата (Jak @ 28.11.2019)
    Я их и так считаю, что они в колоде.

    А я и не говорил, что их надо из колоды выкидывать. Предположим, твоя программа считает правильно. Тогда, увидев разложение 3и4 в мидл, можно сделать вывод, что 8ка мне ТОЧНО НЕ приходила. Иначе я бы положил её вниз. Это какая-никакая, но информация.

    Цитата (Jak @ 28.11.2019)
    В конце получается, что заняты картами все 3 линии

    И всё-таки не могу понять. Имеем стартер ААКК7. С грехом пополам разложили КК/АА/7, а дальше?
    Пришли 982. Куда их кладём? Учитываем все варианты разложения, сохраняем их и дальше к каждому "тянем" очередные 3 карты?
    Цитата (Jak @ 28.11.2019)
    Если скуп - отнимаем скуп (можно выбрать 0, -6, -12) от суммы

    Непонятно, зачем заведомо считать скупы? К примеру, положив 2ку вниз к 7ке, мы резко уменьшаем МО руки(можно сказать, идём на скуп). А вот положив 89, наоборот, увеличиваем.
    Цитата (Jak @ 28.11.2019)
    Например всех троек на первом подъеме, когда в колоде 47 карт - 19'312'117'754'529'600 = С(47,3)*С(44,3)*С(41,3)*С(38,3).

    Эээ...всех троек вроде как С(47,3) = 16215 вариантов. Ну, ещё 27 вариантов разложения. Число большое, но не то, что ты привёл
    Цитата (Jak @ 28.11.2019)
    Если я посчитаю 100'000 вариантов - это крохи от всех вариантов.

    Ну, и наконец самый главный вопрос: как это вариантов миллиарды(если не триллионы), а МК у тебя сходится уже на 100000? То есть ты считаешь менее 1% и уже выходишь на "правильное" разложение? Не верю ))

    я спать
    161/741
    Ответить Цитировать
    0
1 17 18 19 20 39 114
1 человек читает эту тему (1 гость):
Зачем регистрироваться на GipsyTeam?
  • Вы сможете оставлять комментарии, оценивать посты, участвовать в дискуссиях и повышать свой уровень игры.
  • Если вы предпочитаете четырехцветную колоду и хотите отключить анимацию аватаров, эти возможности будут в настройках профиля.
  • Вам станут доступны закладки, бекинг и другие удобные инструменты сайта.
  • На каждой странице будет видно, где появились новые посты и комментарии.
  • Если вы зарегистрированы в покер-румах через GipsyTeam, вы получите статистику рейка, бонусные очки для покупок в магазине, эксклюзивные акции и расширенную поддержку.