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

23
Статистика
Статистика
23
Статистика темы
  • Популярность
    Топ-5197
  • Постов
    2,261
  • Просмотров
    184,268
  • Подписок
    23
  • Карма автора
    -45
1 70 71 72 73 114
  • БиллиУбили @ 13.4.2020
    Производительность не мерил )

    Где-то
    10-11
    фантазий в секунду. Получается, определение комбинации настолько быстрое, что нет смысла его экономить.
    БиллиУбили @ 13.4.2020
    так как он находит сразу все возможные очки(8, 11, 12, 20 и т.д.)

    Тут тоже есть решение. Достаточно создать стэк из 3-5 позиций. Если находятся очки больше, то предыдущий минимум из стэка удаляется. Таким образом, будем иметь топ из 3-5(сколько захотим) очков.
    Ответить Цитировать
    609/741
    + 2
  • БиллиУбили @ 14.4.2020
    10-11


    Нормально, стартер лет за 10 посчитает
    Ответить Цитировать
    420/882
    + 1
  • Безусловно, рекурсия дала бы выигрыш, если бы были доп. инструменты:
    1. Построение отдельного дерева для набора 14-17 карт
    2. Поиска в нём комбинации с фильтром по рангу
    Массив этого не даёт(насколько я понимаю). Но всего этого пока нет, поэтому остановимся на прямом переборе.
    Подключил флаш, кикеры. Совсем скоро тестирование производительности, а там и разложение стартера по формуле х\хх\хх
    Ответить Цитировать
    610/741
    + 2
  • БиллиУбили, твою бы энергию да в новые технологии вложить
    Ответить Цитировать
    421/882
    + 2
  • c00l0ne, тогда бы мы их никогда не увидели
    Ответить Цитировать
    136/314
    + 0
  • БиллиУбили @ 15.4.2020
    1. Построение отдельного дерева для набора 14-17 карт

    Если ты про дерево, где 232 варианта стартера, а для 13 карт 72072 варианта расстановки(14 карт = 216216, 15 карт = 648648), то у меня есть код - проход по дереву и подсчет очков. Для поиска стартера из 14 карт, скорость в один поток, на ноут процессоре 4000-4500 в сек., метод монте-карло. Могу этот код продать.
    Сообщение отредактировал Luisito99 - 16.4.2020, 12:10
    Ответить Цитировать
    1/35
    + 0
  • Luisito99, погоди, друг, я сам попробую )

    2 All
    Неудачей закончилось попытка накопления вариантов разложения, дающих одинаковые очки. Тут дело в том, что одни и те же очки можно набрать разными комбинациями(например 6 очков: либо фулхаус внизу, либо флаш+трипс)
    Поэтому, видимо, придётся накапливать общее число этих "разных" вариантов разложения, надеясь, что если мы зафиксируем карты стартера, такие коллизии будут исключены. Также можно надеяться на то, что чем больше очки(18,20,22...), тем меньше вероятность собрать их разными комбинациями.
    Какие есть способы различать различные по комбинациями разложения , но дающие одни и те же очки, и нужно ли вообще об этом переживать?
    Ответить Цитировать
    611/741
    + 2
  • БиллиУбили @ 15.4.2020
    Совсем скоро тестирование производительности

    100
    фантазий за 1 сек. В каждом боксе 3 карты, полный переборFULL CONTACT
    Для двух боксов по 5 карт думаю, сильно ничего не изменится.
    Музыкальная пауза
    Ответить Цитировать
    612/741
    + 1
  • Вы че 1,5 года программу делаете ?
    А купить не?
    Ответить Цитировать
    1/1
    + -2
  • Arhitektor @ 17.4.2020
    А купить не?

    Покупай. Кто-то мешает?

    2All
    Гоняю пока разложение 3-3-3.
    Вот такая ситуация. 100 симуляций сбора руки.
    2 карты из (рандомного) стартера набрали 11очков - 36 раз, 12 очков - 24 раза, 13 очков - 1 раз
    Другие 2 карты те же очки - 0, 1, 6 раз
    И что? Вроде бы 6 раз по 13 "круче", чем 1. Но смущают нули и единицы.
    Что посоветуете? Может суммировать ТОП-3?
    Ответить Цитировать
    613/741
    + 0
  • БиллиУбили @ 19.4.2020
    Что посоветуете? <--


    В общем - это тупиковый путь. Ищи другой вариант расклада стартера.

    Мое мнение - нужно эмулировать игру свою и оппов и смотреть у какого варианта стартера лучше продолжение.
    Ответить Цитировать
    137/314
    + 1
  • Jak @ 20.4.2020
    В общем - это тупиковый путь. Ищи другой вариант расклада стартера

    Как тупиковый, если уже за 100 разложений фантазий я чётко получил преимущество "эти 2 карты вниз" перед "другие 2 карты" вниз.
    Я представляю это себе как готовую руку, в которой я смогу совершить 4 обмена. Да, правила обмена весьма специфичны(меняются обязательно 2 карты, пропускать нельзя) - но это даёт хорошее приближение итогового результата. Тут же дело не в максимуме очков(11, 12, 13 и т.д.), а в количестве вариантов. Другими словами, если уже на 3ьем подьёме(ака обмене) я смог собрать флаш/стрит/пара, то кол-во вариантов отвечает за сохранность итоговых очков(после всех подьёмов). Картами, которые придут, можно будет безболезненно заменить уже положенные. В частности, в описанном варианте из 3ёх карт мне надо, чтобы не "убить" руку, вытащить либо 2 карты в масть, либо одну карту в масть и одну карту "в стрит", либо 2 карты "в стрит". А если у меня внизу фулхаус, то придётся вытаскивать уже 1(или 2) карту из 8-5=3ёх, что гораздо маловероятнее. Ну и т.д., не вытащив 1 карту из 3ёх, придётся "дестроить" комбинацию в среднем боксе. Если там 2 пары - придётся тащить 1 карту из 4ёх. А если там пара АА, то вообще ничего тащить не надо, можно безболезненно поменять 2 кикера на другие 2 кикера.
    Подход очень перспективный, как мне кажется.

    ЗЫ Прошу выложить какой-нибудь хитрый стартер, где хочется положить по-одному, а класть надо совершенно по-другому. Вот мы и проверим это моей методой
    Ответить Цитировать
    614/741
    + 1
  • Да вот, обыкновенный стартер (был в кэше на покердом)
    - как бы готовый флеш.

    Вот как раскладывает стартер через фанту (по твоей методике) у меня 100000 раскладов, 40сек, 1 поток.


    А так разложил чувак:

    ---

    я сначала офигел, ну явно же надо все 5 карт вниз!!
    тут же проверил в проге и офигел еще раз.

    Я проверил у себя, при разных настройках среди лучших три расклада:


    ---



    ---





    Ответить Цитировать
    138/314
    + 0
  • Jak @ 20.4.2020
    я сначала офигел, ну явно же надо все 5 карт вниз!!

    Зачем? У нас ещё 8 карт, чтобы закончить флаш. А К или Q лучше заиграть на фантазию.

    Jak @ 20.4.2020
    Я проверил у себя, при разных настройках среди лучших три расклада:

    Какой смысл класть К в топ вместо Q? Типа шансы собрать фантазию одинаковые, но на одно очко больше?
    Странно, что третий расклад у тебя вообще не попал в варианты по "моей" методе. 89 - неплохое начало для стрита вообще-то.
    В любом случае, огромное спасибо за подгон стартера. Будем работать.
    Сейчас у меня вопрос по тому, а как, собственно говоря, хранить варианты разложения стартера. Тут без классов не обойтись. Мало найти все варианты разложения, надо ещё их хранить и делать обход.

    ЗЫ Меня смущает маленькая разница между вариантами...12270 вс 9315 и так далее. Разрывы должны быть на порядок, как мне кажется...
    Ответить Цитировать
    615/741
    + 1
  • Если играем "прогрессив" - К в топе дает 15 карт фанту против Q-в топ = 14 карт фанта. И разница тут не 1 очко, а больше. Лишняя карта на фанте.
    Ответить Цитировать
    139/314
    + 0
  • БиллиУбили @ 20.4.2020
    Тут без классов не обойтись.

    Быстренько сделал, благо опыт уже копится. Всего 232 варианта для 3/5/5 и 210 для 3/3/3.
    Пока остаюсь на маленьком дереве, будем обкатывать методу
    Ответить Цитировать
    616/741
    + 1
  • 90 вариантов для руки 3/3/3. По 1000 прогонов на каждый вариант.
    В результате осталось 5 вариантов(все остальные не смогли преодолеть планку даже в одно очко.
    U dDT g 0 0 11 0 0 0 1
    dDT gU 819 0 8 0 3
    dDT U g 1326 0 0 0 3
    dDT gU 1056 0 1 2
    dDT g U 1406 0 41 2

    Здесь цифры обозначают кол-во вариантов, которыми были набраны очки. Очки идут по нарастающей: 0,1,2,3 и т.д.
    Помогите Даше выбрать лучшее разложение.
    Пока идеи следующие.
    а) сделать отсечку(в общем случае на 7-8 очков, мы же не планируем собрать меньше)
    б) всё, что больше отсечки, суммировать произведение кол-ва вариантов на сумму очков
    То есть, в таком случае победит последнее разложение 41*2 + 2*3 > (8*2 + 3*4)
    Ответить Цитировать
    617/741
    + 1
  • Если вкратце, чтобы обновить состояние с новым байтом данных, вы сдвигаете всё вниз на один байт (отбрасывая нижний байт), а затем делаете XOR c константой из таблицы преобразования, проиндексированной по байту данных после XOR'а с нижним байтом. key1 — это внутреннее состояние усечённого линейного конгруэнтного генератора (TLCG). Чтобы обновить его внутреннее состояние, мы добавляем байт данных, умножаем на константу, которую назовём c, и добавляем единицу.
    а чё тут непонятного? ты примерно тоже самое написал
    Ответить Цитировать
    140/314
    + 0
  • Jak, что конкретно тебе непонятно?
    dDT g U - 5 карт стартера, которые можно разложить различными способами(разные карты на разные линии).
    Если не можешь абстрагироваться, представь, что это
    Далее фиксируем разложение и проводим разложение фантазии на различных доп. картах(в моём случае я "добавлял" 12 рандомных карт). Так 1000 раз.
    Далее считаем сколько раз мы собрали те или иные очки.
    В случае U dDT g 0 0 11 0 0 0 1
    мы смогли 11 раз собрать 2 очка и 1 раз 6 очков
    Мой вопрос заключается в том, как на основании этой информации выбрать "лучшее" разложение.
    Разложения, которые вообще не набрали очков, я отбросил.
    Ответить Цитировать
    618/741
    + 1
  • Потихоньку двигаемся к разложению стартера

    Пока не определился, как именно считать очки за то или иное разложение.
    Но уже сделал конструкцию, чтобы найти топ-5 по очкам.
    Для этого работает следующий цикл:
    1. привязать очки к разложению
    2. посчитать очки, которые даёт "новый" набор из 12 карт Х 100 раз
    3а отбросить последних 10 разложений
    3б взять топ очков и отбросить разложения, набравшие менее 80%(70, 60...)очков
    4. повторить п.п.2-3
    Пока что заменил п.2 добавлением рандомного значения...500 циклов\с
    Неплохо, учитывая, что элементы контейнера недоступны для редактирования
    Спасло
    final_layouts = final_layouts2;


    Жду вашего выбора между 3а и 3б. Ну, и вопрос, который я задавал ранее. Если мы знаем, сколько очков(нарастающим итогом) дают фантазии на каждом разложении...как их ранжировать?
    Пока думается сделать отсечку 7-8 очков и брать сумму(очки*кол-во вариантов). Как говорят блогеры: а как считаете вы? Напишите в комментариях )
    Ответить Цитировать
    619/741
    + 0
1 70 71 72 73 114
1 человек читает эту тему (1 гость):
Зачем регистрироваться на GipsyTeam?
  • Вы сможете оставлять комментарии, оценивать посты, участвовать в дискуссиях и повышать свой уровень игры.
  • Если вы предпочитаете четырехцветную колоду и хотите отключить анимацию аватаров, эти возможности будут в настройках профиля.
  • Вам станут доступны закладки, бекинг и другие удобные инструменты сайта.
  • На каждой странице будет видно, где появились новые посты и комментарии.
  • Если вы зарегистрированы в покер-румах через GipsyTeam, вы получите статистику рейка, бонусные очки для покупок в магазине, эксклюзивные акции и расширенную поддержку.