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

22
Статистика
Статистика
22
Статистика за месяц
  • Популярность
    Топ-166
  • Постов
    0
  • Просмотров
    +833
  • Подписок
    0
  • Карма автора
    0
Лучшие посты автора
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, вы получите статистику рейка, бонусные очки для покупок в магазине, эксклюзивные акции и расширенную поддержку.