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

22
Статистика
Статистика
22
Статистика темы
  • Популярность
    Топ-5759
  • Постов
    2,261
  • Просмотров
    174,080
  • Подписок
    22
  • Карма автора
    -45
1 88 89 90 91 114
  • Jak @ 12.11.22 

    88

    КК2 - 2,900673, 883 сек

    А вот это не верно сразу видно

    На глазок фуллхаус только даст 40% *6  и ещё второй фулл и фанта

    ...

     

    7.15 должно быть

    Сообщение отредактировал c00l0ne - 13.11.2022, 8:23
    Ответить Цитировать
    587/882
    + 0
  • c00l0ne @ 13.11.22 

    8.14208

    У тебя круче получается

    Я флеши в середину пока не стал выкидывать, иногда они случаются

    Ответить Цитировать
    171/314
    + 0
  • Запустите глобальную симуляцию, максимально приближенную к реальной ситуации. Например мы 2-е из 3-х. С вышедшими из игры картами, которые известны программе и вышедшими из игры картами, но неизвестными программе. Пусть сыграет 500 игр. Если результаты будут низкими - гарантированно неправильный алгоритм, либо стартера, либо следующих подъемов. Цель - 500+ очков/100 игр. Насчет остальных показателей сказать сложно, надо знать показатели сильных игроков. Думаю фантазий должно быть 25+/100 игр. Но все зависит от количества игроков и нашей позиции за столом. Поэтому лучше, для начала, рассматривать ситуацию, что мы  2-е из 3-х.

    Ответить Цитировать
    10/35
    + 0
  • Jak @ 12.11.22 

    -

    2

    КК88 - 8.357520, 452 сек в один поток

    Щас это считает за 90 сек. ЗЫ. И это в режиме отладчика.

     

    Разбил на 6 потоков, равномерных, время счета каждого потока почти одинаково. Можно еще разбить, но глобально скорость уже не уменьшится. разницы нет 90 сек или 60.

     

    И еще заметил. Т.к. я не убрал флеши из массивов, масть карт имеет значение. Придется для стартеров сделать свои массивы, без флешей.

     

    Теперь надо научиться получать примерный расчет быстро, для поиска лучших вариантов стартера.

    Ответить Цитировать
    172/314
    + 0
  • 88

    КК2 решилось?

    Не торопись с мультипотоком, сначала результаты надо выпрямить...

    Где то что то не считает в этом стартере

     

    Jak @ 13.11.22 

    разницы нет 90 сек или 60

    Это предел уже алгоритма и цпу, но для стартера посчитанного напрямую это очень быстро

    Дальше другой алгоритм копать будем) более сложный) но максимально быстрый) 

     

    Пс сколько памяти потребляет во время расчётов , 60 мб?)

    Сообщение отредактировал c00l0ne - 13.11.2022, 16:12
    Ответить Цитировать
    588/882
    + 0
  • Luisito99 @ 13.11.22 

    глобальную симуляцию, максимально приближенную к реальной ситуации

    Симуляция не есть решение

    Она собирает статистику , но не даёт оценку правильную ходам, чтобы сделать оценку хода , тебе придётся составлять граф или дерево монте Карло, а это тот алгоритм уже как решал джак галакс ... Дистанция в 500 раздач не показательная к тому же, в симуляциях дистанции от 1*10^9 показательны

    А это очень долго и очень много памяти занимает, не выполнимо

     

     

    Пс сорян понял, для тееестов алгоритма, понял, ну тут цифры этого стартера мне известны, поэтому ничего не надо симулировать

    Ответить Цитировать
    589/882
    + 0
  • Jak @ 13.11.22 

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

    Примерный расчёт, абсолютным методом) такого не бывает, АСУ твоё желание все превращать в рта и бота

    Ты выше этого)

    Думай в сторону солвера...

    От того что ты посчитаешь 1 стартер , от этого в китайском покере ничего не измениться

    Нужно посчитать все, на этом решение будет завершено

     

    Пс если будут новые результаты чиркни, с программированием очевидно у тебя лучше получается чем у меня

    Сообщение отредактировал c00l0ne - 13.11.2022, 17:30
    Ответить Цитировать
    590/882
    + 1
  • На чем закончили то, индексацию провели и пришли к таблице большой

    Мы считали там терминальных нод 15 млрд шт

    Теперь давайте посчитаем кол-во нод предпоследнего хода, за один ход до окончания игры

    На доске должно не быть двух карт 

    То же самое сделаем для второго первого и стартера

    Алгоритм то одинаковый

    Сразу говорю задача не для новичков и требует высокого уровня технического программирования)

    Если не уверены в своих силах просто пропустите, не тратьте время... 

    Узнаем наконец-то число уникальных стартеров

    Сообщение отредактировал c00l0ne - 14.11.2022, 3:00
    Ответить Цитировать
    591/882
    + 0
  • c00l0ne @ 14.11.22 

    Узнаем наконец-то число уникальных стартеров

    Это число известно давно.

    Лично я его знаю почти 20 лет, как начал считать пятикарточный покер с обменами для казино.

     

    А если мы вторые (-5 карт)? А если мы третьи (-10 карт)? Ноды будешь пересчитывать или отбрасывать?

     

    ЗЫ. Убрал все флеши и оценка стартера резко упала. Там, где раньше было ~8, стало ~2.

    Видимо флеши в миде или в низу, где возможно, имели большое влияние. Все таки в миде флеш дает 8 очков, + дает возможность собрать вверху любую пару и сет. А если вместо флеша пустая комба (стритфлеши и рояли не в счет), то вверху ничего не положить. 

    Причем я всегда брал минимальную по номеру карту, типа старался взять пику, если не занята. Цикл же от 0 до 12. И получалось, что брал пику чаще из всех мастей, и флешей с пикой было много, а оценку брал, как для любой масти, что неверно. Сейчас делаю, отдельно для флешовой масти и всех остальных, получается двойной цикл. Будет намного дольше считать, но зато верно.

    Ответить Цитировать
    173/314
    + 0
  • Нашел код из 2005г, где я использовал файлик в котором, все оригинальные стартеры и их количество. Всего оригинальных 94192 штуки.

    Ответить Цитировать
    174/314
    + 0
  • Jak @ 14.11.22 

    Нашел код из 2005г, где я использовал файлик в котором, все оригинальные стартеры и их количество. Всего оригинальных 94192 штуки.

    Учитывая все варианты расстановки надо... Это же ноды... 

    Например 

     

    2

    Кк88

     

    И 

     

    88

    Кк2

    Это разные ноды

    Ответить Цитировать
    592/882
    + 0
  • Jak @ 14.11.22 

    было ~8, стало ~2.

    Видимо флеши в миде или в низу, где возможно, имели большое влияние. Все таки в миде флеш дает 8 очков, + дает возможность собрать вверху любую пару и сет. А если вместо флеша пустая комба (стритфлеши и рояли не в счет), то вверху ничего не положить. 

    Сразу же написал откинуть флешики

    Откинуть можно когда код HR берёшь , бит флешовый зануляя

    Описать бы твой алгоритм нормально, оценка упала, это оч плохо , я сразу подумал что флеши

    Там без флешей я цифры приводил выше

    Ответить Цитировать
    593/882
    + 0
  • Учтены именно все варианты.

    Например       и       одинаковы (перестановкой мастей), а вот       и      разные, масти не совпадают. Уж не говоря про номиналы карт.

     

    c00l0ne @ 14.11.22 

    Учитывая все варианты расстановки надо... Это же ноды... 

    Например 

     

    2

    Кк88

     

    И 

     

    88

    Кк2

    Это разные ноды

    а тут еще от мастей зависит.

    формально 

     

        

    и

     

        

    разные. Разное влияние мастей. Хотя этим можно пренебречь.

    Ответить Цитировать
    175/314
    + 0
  • Jak @ 14.11.22 

    мастей зависит.

    Это да но пока масти можно скипнуть

    Просто сделать ядро какое нибудь рабочее

    Почти нету времени сейчас, катка сон работа... И так день сурка...

    Ответить Цитировать
    594/882
    + 0
  • Jak, и тишина, сдался?

    Ответить Цитировать
    595/882
    + 0
  • А что надо отчет каждый день?

     

    Уменьшил время до 60сек, любой вариант стартера. на 6-ти потоках. На одном потоке (для проверки) время уменьшил в 2 раза.

     

    Сейчас пытаюсь добавить флеши. Без них сильно обрезаем роялти. Вариант, когда три-четыре мастевых вниз вообще не рассматривается.

     

    Нужен один точный эталонный расчет стартера.

    Ответить Цитировать
    176/314
    + 0
  • Jak @ 12.11.22 

    -

    88

    КК2 - 2,900673, 883 сек

    Вот этот сколько стартер роялти...

     Остановился ты на нем, я же тебе писал

    В нем ошибка у тебя

    Если условия соблюдены скуп= 0 и только роялти считаем

    И я не понял совсем про приблизительные расчёты, ты как записываешь евшки?

    По каким формулам?

    Ответить Цитировать
    596/882
    + 0
  • Тем временем

    Амуди там новую линейку эпиков релизнули , Интеловцы в курилку побежали смотреть спеку

    96 ядер в одном флаконе... Уфф

    6Tb 12 канальной рамы DDR5

    Сообщение отредактировал c00l0ne - 17.11.2022, 13:32
    Ответить Цитировать
    597/882
    + 0
  • c00l0ne @ 17.11.22 

    Если условия соблюдены скуп= 0 и только роялти считаем

    И я не понял совсем про приблизительные расчёты, ты как записываешь евшки?

    По каким формулам?

    По формулам сложения.

    Есть record TMan в котором карты по линиям, кол-во карт по линиям, общее кол-во карт, сила руки по линиям, оставшиеся в колоде карты на этот момент и тд.

    В начале он пустой. 

    Сунул в него 5 карт по линиям. Все поменялось внутри. Сменился массив аутов. Outs[0..12]

    (1) 

    Передаю его в цикл Loop 0..12. 

    Ищем первую доступную карту. Смотрю сколько у нас аутов Outs, если больше 0, смотрю какая из этих карт есть на поле оставшихся карт. Нашел, запоминаю ее ii и кол-во OutII. С поля ее удаляю. ЗЫ. Как только вернусь с нижнего уровня, карты надо вернуть на поле.

    Ищем вторую карту. Смотрим сколько осталось аутов Outs[j] по аналогии с первой. Нашел, удаляю. Вторую карту выбираю в цикле i..12, чтобы не задвоить пары (типа 6К, потом пару К8, те беру толлько 1 раз, тк во втором циклу иду с номера i первого цикла, сюда попадают все пары 55, 66, итд).

    В цикле 0..8 пытаюсь их положить на свободные места. 9 вариантов. (На этом уровне когда все 9 вариантов вернутся из глубины, смотрю максимальный из них, это будет роялти для этих двух карт * на ауты первого * ауты второго).

    Положил один вариант. Запомнил всего TMan. Если карт на линиях не 13, тогда рекурсия. 

    (2) 

    Передаю его в этот же цикл Loop (1) на уровень ниже.

    Там по кругу опять уже у нового TMan смотрю ауты, кладу по линиям и внутрь опять.

    Как только набрал 13 карт. Считаю роялти по линиям, посчитал. Вернулся вверх на уровень Loop11, в место (2), увеличил два счетчика Sum и Cnt. тут сумма, а не максимум, тк пары карт разные. Когда для карт из верхнего уровня посчитал все пары (0..12)(i..12) собранную сумму делю на кол-во аутов - это среднее роялти по этим картам. 

    И так до верха, когда все циклы спустятся в низ с уровня Loop5 до Loop13 и вернутся назад, на последнем Loop7 сложу все суммы и поделю на суммы аутов, получу роялти для этого варианта стартера.

    Все просто. Никаких терабайтов инфы. На каждом уровне по 2 циферки сумма роялти с нижнего уровня и сумма аутов.

     

    Ответить Цитировать
    177/314
    + 0
  • Jak, вырубает спать, но прочитал , не убидительные формулы свиду

    Ответить Цитировать
    598/882
    + 0
1 88 89 90 91 114
1 человек читает эту тему (1 гость):
Зачем регистрироваться на GipsyTeam?
  • Вы сможете оставлять комментарии, оценивать посты, участвовать в дискуссиях и повышать свой уровень игры.
  • Если вы предпочитаете четырехцветную колоду и хотите отключить анимацию аватаров, эти возможности будут в настройках профиля.
  • Вам станут доступны закладки, бекинг и другие удобные инструменты сайта.
  • На каждой странице будет видно, где появились новые посты и комментарии.
  • Если вы зарегистрированы в покер-румах через GipsyTeam, вы получите статистику рейка, бонусные очки для покупок в магазине, эксклюзивные акции и расширенную поддержку.