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

Последний пост:26.11.2023
22
1 9 10 11 12 31 114
  • Так, получены следующие результаты (для примера https://forum.gipsyteam.ru/index.php?viewtopic=142685&st=60#entry5978018)
    для 2ух нижних линий собраны все комбинации старше "пара", а для топа собраны все, независимо от того, фантазия там собирается или просто комбинация "старшая карта".
    Тогда с упрощением того, в готовой руке комбинации должны быть СТРОГО старше снизу вверх(то есть, мы временно отбрасываем случай "2пары" внизу и "2пары" в мидл) получаются следующие порядки вариантов:
    - 420К случаев, когда в топе "пара" (22+)
    - 2.3КК случаев, когда в топе "старшая карта", а мидл и низ "упорядочены"
    Прогресс заключается в том, что теперь это считается за 10 сек, а не за 4 минуты.
    Если теперь перевести эти варианты в вероятность(а это ещё в предыдущих попытках занимало секунды) и умножить на очки(а я считаю их для всех линий), то получится очень хорошее приближение к значению ЕВ.
    79/741
    Ответить Цитировать
    0
  • БиллиУбили, напиши что нибудь осмысленное уже ... это сложно читать все ... очень сложно ... время не важно сколько считает , важно что у тебя считается ... какие 420к случаев ... там ведь просто местами карты меняются ....
    43/882
    Ответить Цитировать
    0
  • Цитата (c00l0ne @ 23.2.2019)
    какие 420к случаев ... там ведь просто местами карты меняются ....

    случаи простые: комбинация внизу строго старше комбинации в мидл, комбинация в мидл строго старше пары в топ.
    Естественно, часть из них равны с точностью до перестановки(пришедших за оставшиеся подьёмы карт). Но меня это не волнует, считаются все варианты.
    80/741
    Ответить Цитировать
    0
  • Ну, да...считает. С фантазией набрано ~300 условных "очков", без фантазии - ~1400.
    Теперь можно перейти к сравнению комбинаций одинакового старшинства, а если и они равны, то учитывать кикер.
    Например, "старше"
    Максимальное кол-во кикеров - 5 шт(в случае разномастных флашей), поэтому в общем случае для записи комбинации в виде числа понадобится (4+5x4)бит (4 бита для комбинации и 4 бита, так как различных достоинств карт 13, от 2 до туза).
    Жаль, что в С++ нет шестнадцатеричных переменных, придётся возиться с десятичными.
    ЗЫ Может сразу заменить колоду 52 числами?
    81/741
    Ответить Цитировать
    0
  • Люди, я вас прошу, убейте его или интернет отключите, покалечьте, наркотиков дайте. Китаю итак года 2 от силы жить осталось. Боюсь, что с такими товарищами как БиллиУбили максимум полгода год...
    1/17
    Ответить Цитировать
    1
  • DmNass, друг, а причём тут я? Альфазиро для шахмат написали? Написали. (забавно, что играть она(программа) училась сама с собой, то есть это тебе не дебютные базы на N-ходов). Автопилот для Теслы сделали? Сделали. Так что и Китай уже скорее всего давным-давно просчитан.

    Переделал сравнение комбинаций, но пока только для комбинации "пара"(то есть учитываю ещё 3 кикера сразу, а не путём сравнения строк с одинаковой парой). Пока расчёт ЕВ руки из примера укладывается в 10 сек. Проверю ещё раз, конечно, ничего ли я не напутал. Но потом останется добавить комбинации (две пары, стрит и т.д.), и не думаю, что время расчёта намного увеличится.
    82/741
    Ответить Цитировать
    0
  • DmNass, хм.. а мне кажется, он наоборот продлевает жизнь ананасу своими расчетами)
    4/9
    Ответить Цитировать
    3
  • Так, ну новости такие: переписал сравнение комбинаций в виде целых чисел.
    для примера https://forum.gipsyteam.ru/index.php?viewtopic=142685&st=60#entry5978018
    Всего около 350КК вариантов рук.
    Если поставить ограничение "в топе комбинация 22+", то получается около 1.2КК рук, ЕВ считается за 10сек
    Если, наоборот, поставить ограничение "в топе комбинация младше пары", то получается около 65КК рук, ЕВ считается за 4+мин.
    Попробую теперь посчитать ЕВ отдельно двух нижних линий.
    83/741
    Ответить Цитировать
    0
  • Так, ну перебор 65КК вариантов "готовых" рук удалось уменьшить по времени до 2 мин, но дело совершенно в другом(как мне представляется). Имеем 80К вариантов завершений нижний и средней линий и 780 вариантов завершения топа.
    Так вот просто обойти их - мгновенно...Обойти с каким-то условием(например, топ старше мидл) и даже какими-то вычислениями - секунды. А вот обойти с сохранением "пути" до завершения - уже 2 минуты.
    В моём представлении это происходит из-за того, что для каждого варианта завершения топа его "путь" находится не мгновенно, а зачем-то ищется(?) среди 750 вариантов, соответственно и "путь" для варианта из 80К завершений нижний и средней линий тоже берётся не по текущему итератору, а зачем-то ищется(?) среди всех этих вариантов.
    Вроде бы итератор должен однозначно указывать на "путь", соответствующей данному завершению, но получается, что происходит его поиск. Хотя это и достаточно быстро, но задержка накапливается, и общее время сбора полного(по 3ём линиям) "пути" растёт до 2 мин.
    Есть идея поменять формат хранения комбинацию и "путь" до её завершения в какой-либо либо линии. Сейчас это std::pair<int,std::string>,
    где int - это комбинация, выраженная в целах числах, а std::string - 2 карты, которые её образуют.
    Есть тут программисты? Из-за чего вы считаете происходит задержка: из-за использования std::pair или std::string?
    84/741
    Ответить Цитировать
    0
  • Проверил массивы на 20К элементов. Всё работает. Временно отложим всё это ООП, хотя добавлять джокера в колоду будет трудновато, конечно...
    В колоде 52карты, от 0 до 52. Комбинацию запишем в виде целого числа, где первые разряды - сама комбинация(от 0 до 9), кикеры(при необходимости) туда же(в младшие разряды). Ну, это чтобы свести сравнение как сравнению двух чисел.
    Все эти std::pair и прочее - суть излишество...
    85/741
    Ответить Цитировать
    0
  • Надо добивать всё это дело...
    Проверка на флаш(набор из 3ёх карт, каждая карта - 2 бита, масть и значение)

    unsigned long data=0x212F1F;
    data = data & 0x101010;

    Подсчёт кол-ва "повторов" среди 3ёх карт(цикла пока нету, главное - идея)
    char text_buff[22];
    int N[16];
    unsigned int i;
    data2 = data % 0x10;
    data2 = data>>8;
    data2 = data2 % 0x10;
    data2 = data>>16;
    data2 = data2 % 0x10;
    sprintf (text_buff, "%X", data2);
    sscanf(text_buff, "%D", &i);
    N[здесь буква и, форум ломает форматирование]++;

    список TO DO:
    добить распознавание комбинаций
    ЗЫ Знаю, программирование не экстра-класса, ногами не бить. Если у кого есть замечания(не только по коду) - велком!
    86/741
    Ответить Цитировать
    1
  • Так, ну, как я и ожидал, удалось уложится в 10 сек.
    Что делает программа:
    для руки



    и колоды, из которой удалены карты противника, делаются следующие шаги
    1. добавляются 2 произвольные карты вниз и сохраняются все получившиеся комбинации
    2. добавляются 2 произвольные карты в мидл и сохраняются все получившиеся комбинации
    3. для пунктов 1-2 ищутся те комбинации, где низ старше мидла и снова сохраняются уже как одна "комбинация ниже топа"
    4. добавляются 2 произвольные карты в топ и сохраняются все получившиеся комбинации
    5. для пунктов 3-4 ищутся те комбинации, где"комбинация ниже топа" старше топа и снова сохраняются
    6. для комбинаций из пункта 5 считаются очки и 6 карт, которые нужны для их "сбора"
    7. Зная 6 карт, мгновенно считается вероятность добыть их за 3 подьёма(9карт)
    Теперь вопрос к математикам:
    а) что я посчитал. Нет, в случае одного подьёма я приблизительно понимаю...а для 3ёх подьёмов?
    б) как решать проблему последнего подьёма, на котором приходят 3 карты. Предположим, закрыты низ и мидл, пришли . Вроде бы ничего страшного, комбинация и предусмотрены, но не получится ли, что они будут посчитаны дважды?
    87/741
    Ответить Цитировать
    0
  • я не читал все, фактически листнул мельком, но у меня возник вопрос
    правильно ли я понимаю,что тс создает программу которая фактически будет работать как бот или подсказчик в китае? При этом это обсуждается на форуме где в принципе много раз поднимался вопрос о таких подсказчиках(ботах) их запрете и вреде для других игроков ?
    при этом 1)тс не боится быть забаненым на джипси, 2) тс не боится быть забаненым в руме
    Может я чет не вдупляю объясните мне
    1/3
    Ответить Цитировать
    0
  • БиллиУбили, ты рисковый парень однако
    2/3
    Ответить Цитировать
    0
  • Цитата (gurgen064 @ 6.3.2019)
    я не читал все, фактически листнул мельком, но у меня возник вопрос
    правильно ли я понимаю,что тс создает программу которая фактически будет работать как бот или подсказчик в китае? При этом это обсуждается на форуме где в принципе много раз поднимался вопрос о таких подсказчиках(ботах) их запрете и вреде для других игроков ?
    при этом 1)тс не боится быть забаненым на джипси, 2) тс не боится быть забаненым в руме
    Может я чет не вдупляю объясните мне


    А в чем конкретно претензия? ТС создает программу, которая будет (ну или он в это верит) делать расклады близкие к идеальным. Никто ей пользоваться во время игры его не заставляет, может он просто планирует использовать ее для тренировки. Как и ту, о которой рассказывал Джипси в своих стримах. Или вы предлагаете казнить ТС просто потому, что он занимается программированием в этой области?) Написание подобной программы очень нетривиальная задача, так что ТСу респект за усидчивость).
    Будет использовать ее во время игры - будет нарушать правила рума, тогда репортите его в СБ, пусть банят. А пока он занимается увлекательной зарядкой для мозгов с туманным выхлопом.
    1/2
    Ответить Цитировать
    3
  • rodent прав на 100%, ни добавить, ни убавить
    88/741
    Ответить Цитировать
    0
  • Цитата (rodent @ 6.3.2019)
    А в чем конкретно претензия? ТС создает программу, которая будет (ну или он в это верит) делать расклады близкие к идеальным. Никто ей пользоваться во время игры его не заставляет, может он просто планирует использовать ее для тренировки. Как и ту, о которой рассказывал Джипси в своих стримах. Или вы предлагаете казнить ТС просто потому, что он занимается программированием в этой области?) Написание подобной программы очень нетривиальная задача, так что ТСу респект за усидчивость).
    Будет использовать ее во время игры - будет нарушать правила рума, тогда репортите его в СБ, пусть банят. А пока он занимается увлекательной зарядкой для мозгов с туманным выхлопом.


    а потом все жалуются что кругом боты, ну ну
    3/3
    Ответить Цитировать
    -1
  • Цитата (БиллиУбили @ 5.3.2019)
    и колоды, из которой удалены карты противника, делаются следующие шаги
    1. добавляются 2 произвольные карты вниз и сохраняются все получившиеся комбинации
    2. добавляются 2 произвольные карты в мидл и сохраняются все получившиеся комбинации
    3. для пунктов 1-2 ищутся те комбинации, где низ старше мидла и снова сохраняются уже как одна "комбинация ниже топа"

    для пункта 3 добавил исключение комбинаций из пунктов 1-2, использующих одну(или одни) и ту же карту(карты)
    Ну, можно было отложить проверку и до пункта 7, но суровая http://lurkmore.to/%D0%A1%D1%83%D1%80%D0%BE%D0%B2%D1%8B%D0%B5
    прожка пока сдюжила...
    89/741
    Ответить Цитировать
    0
  • Цитата (gurgen064 @ 6.3.2019)
    а потом все жалуются что кругом боты, ну ну


    Обвинять человека, который пытается написать программу для расчетов китая в том, что он приближает смерть китая, это как обвинять студента, который пишет курсовую по нейронным сетям, что он приближает гибель человечества от ИИ.
    2/2
    Ответить Цитировать
    0
  • Цитата (gurgen064 @ 6.3.2019)
    я не читал все, фактически листнул мельком, но у меня возник вопрос
    правильно ли я понимаю,что тс создает программу которая фактически будет работать как бот или подсказчик в китае? При этом это обсуждается на форуме где в принципе много раз поднимался вопрос о таких подсказчиках(ботах) их запрете и вреде для других игроков ?
    при этом 1)тс не боится быть забаненым на джипси, 2) тс не боится быть забаненым в руме
    Может я чет не вдупляю объясните мне


    вообще то тут на форуме был карр который с софтом катал )
    и раскатал всю поляну на покердоме)
    он даже писал в теме у джипси...
    к тому же у джипси был софт давным давно, сейчас мощности выросли что в подвале можно соорудить минисуперкомпьютер который в реальном времени считает китай или холдем или омашку... куда дел софт джипси ?)))
    44/882
    Ответить Цитировать
    0
1 9 10 11 12 31 114
3 человека читают эту тему (3 гостя):
Зачем регистрироваться на GipsyTeam?
  • Вы сможете оставлять комментарии, оценивать посты, участвовать в дискуссиях и повышать свой уровень игры.
  • Если вы предпочитаете четырехцветную колоду и хотите отключить анимацию аватаров, эти возможности будут в настройках профиля.
  • Вам станут доступны закладки, бекинг и другие удобные инструменты сайта.
  • На каждой странице будет видно, где появились новые посты и комментарии.
  • Если вы зарегистрированы в покер-румах через GipsyTeam, вы получите статистику рейка, бонусные очки для покупок в магазине, эксклюзивные акции и расширенную поддержку.s