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

Последний пост:26.11.2023
22
1 18 19 20 21 40 114
  • Цитата (БиллиУбили @ 28.11.2019)
    Эээ...всех троек вроде как С(47,3) = 16215 вариантов.

    пардон, речь идёт о тройки после стартера, то есть как бы о втором подьёме
    Но общая мысль ясна: подьёмы связаны друг с другом, если наугад разложить второй, то дальнейшее вытаскивание и разложение троек бессмысленно. Тут надо сразу тянуть 12 карт и пытаться натянуть сову на глобус. Но и такой подход не очевиден: одно дело ты после страртера решил внизу собирать флаш и положил туда 3 карты, а другое - одну. Вероятности в итоге собрать флаш различны.
    162/741
    Ответить Цитировать
    0
  • Цитата (БиллиУбили @ 28.11.2019)
    Ты сейчас расписался в полной неработоспособности своей проги(без обид). Если бы она давала тебе хотя бы +0,5 куша с раздачи, у тебя ни то, что минусового месяца не было, ты бы уже миллионером был

    Причем тут прога? Она НЕ МОЖЕТ мне дать ничего! Только лучший расклад. Если карта не идет, хоть как их раскладывай - проиграешь более везучему.
    Цитата (БиллиУбили @ 28.11.2019)
    Что такое -6 за скуп я ещё понимаю, но что такое -12?

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

    Распишу последний раз. Вроде уже все разжевал ранее.
    Да. Положили КК/АА/7. Имеем С(47,3)=16215 троек.
    а). Пусть пришли 982. Цикл, 27 раз пытаемся их положить. Положили как-то, низ, мид, топ, не важно. Эти три карты убираем из колоды. Заходим в рекурсию на уровень ниже.
    б). Проверяем, сколько карт лежит на линиях. Не 13? Нет, только 7. В колоде 44 карты. Имеем С(44,3)=13244 троек.
    в). Пусть пришли 568. Цикл, 27 раз пытаемся их положить, на самом деле будет не 27, а меньше. Положили как-то, низ, мид, топ, не важно. Эти три карты убираем из колоды. Заходим в рекурсию на уровень ниже.
    г). Как уровень б). Проверяем, сколько карт лежит на линиях. Не 13? Нет, только 9. В колоде 41 карта. Имеем С(41,3)=10660 троек.
    д).Как уровень в). Пусть пришли 754. Цикл, 27 раз пытаемся их положить, на самом деле будет не 27, а меньше. Положили как-то, низ, мид, топ, не важно. Эти три карты убираем из колоды. Заходим в рекурсию на уровень ниже.
    е). Как уровень б, г). Проверяем, сколько карт лежит на линиях. Не 13? Нет, только 11. В колоде 38 карт. Имеем С(38,3)=8436 троек.
    ж).Как уровень в, д). Пусть пришли КАQ. Цикл, 27 раз пытаемся их положить, на самом деле будет не 27, а гораздо!!! меньше. Положили как-то, низ, мид, топ, не важно. Эти три карты убираем из колоды. Заходим в рекурсию на уровень ниже.
    з). Как уровень б, г, е). Проверяем, сколько карт лежит на линиях. Не 13? Да!!! Дождались! Считаем бонусы по линиям. Если ++ хорошо, ХХ=бонусы, если скуп ХХ=-12 (ну или другое число, можно выбрать до расчетов). Запоминаем. Возвращаемся на ж).
    ж). Проверяем так все 27 попыток. Получаем числа: -12,-12, 8, 6, 8, ... и т.д. 27 ответов. Выбираем максимальный ответ (мы же положим максимально хорошо).
    Запоминаем: получили один расклад из С(38,3)=8436 троек, уровень е). Так считаем для всех С(38,3) троек, получаем для каждой лучший ответ, т.е. если придет какая-то тройка, мы узнаем сколько мы за нее получим. Все это суммируем и делим на С(38,3)=8436.
    Это мы получили ответ на один вариант из 27 для одной из троек из уровня д) (у нас было 754). Считаем для всех 27 вариантов, находим максимум и т.д.

    Когда это все посчитаем, выйдем из всех уровней рекурсии, получим оценку для 982 из уровня а). Для всех 27 вариантов раскладки. Выберем самый лучший и походим так. Не факт, что среди них будут положительные.

    И если будет приходить гавно, то как ты их не тасуй, соберешь либо 0, либо скуп, если начнешь рисковать на фанту. Ну или соберешь фанту.
    Цитата (БиллиУбили @ 28.11.2019)
    всех троек вроде как С(47,3) = 16215 вариантов. Ну, ещё 27 вариантов разложения

    А тут я еще даже занизил свою оценку вариантов. Надо еще внутри 19'312'117'754'529'600 = С(47,3)*С(44,3)*С(41,3)*С(38,3) вставить множители 27 несколько раз, см. выше алгоритм.
    Цитата (БиллиУбили @ 28.11.2019)
    То есть ты считаешь менее 1% и уже выходишь на "правильное" разложение?

    Я выхожу не на "правильное" разложение, а на самое выгодное из этой ситуации. Ведь для разных разложений, я использую такие же подъемы. Все подъемы одинаковы для всех.
    19/314
    Ответить Цитировать
    0
  • Цитата (БиллиУбили @ 28.11.2019)
    Тут надо сразу тянуть 12 карт и пытаться натянуть сову на глобус

    Именно. Я беру сразу 12 карт, но не меняю их порядок. 3+3+3+3. И пытаюсь их положить для всех вариантов 27 положений до самого низа. И таких 12-ток беру 100к, например. Как бы проживаю игру 100к раз.
    И главное. При полном переборе, например, КК/АА/7 имеет оценку 12,5. При МК на 100к пусть будет 9,5 или 14,2. Это не важно. Главное определить КК/АА/7 лучше или нет 7/КК/АА. Которое при полном переборе будет больше или меньше КК/АА/7. Так вот порядок выше или ниже сохранится (возможно, это гипотеза) при МК.
    20/314
    Ответить Цитировать
    0
  • Цитата (Jak @ 28.11.2019)
    Если карта не идет, хоть как их раскладывай - проиграешь более везучему

    Не понимаю, о чём ты. При таких невероятных раскладах, твоё преимущество только усиливается: ты уже наживаешь не полкуша с раздачи, а полтора-два. Ведь хорошие карты тоже можно разложить не по максимуму.
    Цитата (Jak @ 28.11.2019)
    Получаем числа: -12,-12, 8, 6, 8, ... и т.д. 27 ответов. Выбираем максимальный ответ (мы же положим максимально хорошо).

    И сразу замечание: среди 27 ответов будут одинаковые(очки), по какому принципу ты выбираешь один? Ведь их даже могут собрать разные комбинации: стрит внизу + стрит в мидл = 6 и просто фулхаус внизу = те же 6 очков.
    Цитата (Jak @ 28.11.2019)
    Когда это все посчитаем, выйдем из всех уровней рекурсии, получим оценку для 982 из уровня а)

    то есть 100000, о которых ты говоришь, это 100к генераций 12 карт и нахождение для них лучшего расклада стартера?
    Цитата (Jak @ 28.11.2019)
    Ведь для разных разложений, я использую такие же подъемы. Все подъемы одинаковы для всех.

    А зачем тебе в таком грубом приближении использовать рекурсию для нахождения "лучшего" варианта??
    Ты можешь просто разложить 8 карт из 12 по лучшим комбинациям и надеяться, что те 4 которые ты выкинешь, лягут по подьёмам ровно 1-1-1-1. Ну, или будут какие-то задвоения или пересечения и выкинуть без потери очков можно будет 6 карт, а уж они точно лягут по подьёмам как надо.
    Оценка для разложения страртера будет ровно такой же.

    Цитата (Jak @ 28.11.2019)
    И таких 12-ток беру 100к, например. Как бы проживаю игру 100к раз.

    Откуда взялась цифра 100к? Ты пробовал 200к, 500к и ничего не менялось? Но это и не удивительно, в этих 100к находится "лучшее" разложение, остальные ты тупо отбрасываешь.
    Например, для КК/АА/7 это(подозреваю) будет 8(КК)+4(стрит) = 12 с копейками, а для 7/КК/АА наверное 2(трипс)+6(фулхаус) = около 9
    Цитата (Jak @ 28.11.2019)
    Которое при полном переборе будет больше или меньше КК/АА/7. Так вот порядок выше или ниже сохранится (возможно, это гипотеза) при МК.

    ну, в рамках твоей модели(ищется одно, лучшее разложение) именно так и будет.
    Иными словами, ты не нормируешь своё лучшее разложение на кол-во попыток. То есть лучшее разложение - его и будем собирать, к нему и будем стремиться.
    Таким образом, твоя программа делает лишь одно: пытается собрать максимальную("лучшую") комбинацию для тех карт, которые уже в линии. То есть, например для парапарапусто ты будешь ждать завершение фулхауса. Если, вдруг, пришла тройка "не пришей к ### рукав", то она(прога) просто сдаётся(теряет интерес к дальнейшему разложению = борьбе). Такой себе подсказчик...

    ЗЫ Спасибо, что спокойно реагируешь на критику
    я всё-таки спать
    163/741
    Ответить Цитировать
    0
  • Цитата (БиллиУбили @ 28.11.2019)
    Например, для КК/АА/7 это(подозреваю) будет 8(КК)+4(стрит) = 12 с копейками, а для 7/КК/АА наверное 2(трипс)+6(фулхаус) = около 9

    По секрету: КК/АА/7 ~28,5 7/КК/АА ~ 14,0.
    Цитата (БиллиУбили @ 28.11.2019)
    ну, в рамках твоей модели(ищется одно, лучшее разложение) именно так и будет.
    Иными словами, ты не нормируешь своё лучшее разложение на кол-во попыток. То есть лучшее разложение - его и будем собирать, к нему и будем стремиться.
    Таким образом, твоя программа делает лишь одно: пытается собрать максимальную("лучшую") комбинацию для тех карт, которые уже в линии. То есть, например для парапарапусто ты будешь ждать завершение фулхауса. Если, вдруг, пришла тройка "не пришей к ### рукав", то она(прога) просто сдаётся(теряет интерес к дальнейшему разложению = борьбе). Такой себе подсказчик...

    Я хуею, какие выводы ты делаешь из написанного.
    Все расписал, говорю, что мне пох какая комба будет, ВСЕ!!! суммирую, не выбираю лучшую --- и такой вывод! "ты будешь ждать завершение фулхауса".
    21/314
    Ответить Цитировать
    0
  • Цитата (БиллиУбили @ 28.11.2019)
    А зачем тебе в таком грубом приближении использовать рекурсию для нахождения "лучшего" варианта??
    Ты можешь просто разложить 8 карт из 12 по лучшим комбинациям и надеяться, что те 4 которые ты выкинешь, лягут по подьёмам ровно 1-1-1-1. Ну, или будут какие-то задвоения или пересечения и выкинуть без потери очков можно будет 6 карт, а уж они точно лягут по подьёмам как надо.

    Тут то как раз ты будешь "натягивать" лучшую комбу для себя. Т.е. если в этой куче будет 3333 - ты радостно положишь каре!!! Только может прийти так: 3хх+abc+def+333. И ты уже все места для каре занял. А я именно беру карты по порядку!
    22/314
    Ответить Цитировать
    0
  • Блин, не даёшь ты мне уснуть.
    Цитата (Jak @ 28.11.2019)
    По секрету: КК/АА/7 ~28,5 7/КК/АА ~ 14,0.

    что это? Против 3ёх игроков? Я писал про сферическую руку в вакууме, да и ты тоже(у тебя же 47 карт остаётся после стартера). Никаких 28,5 и близко быть не может

    Цитата (Jak @ 28.11.2019)
    не выбираю лучшую

    как не выбираешь, если
    Цитата (Jak @ 28.11.2019)
    ж). Проверяем так все 27 попыток. Получаем числа: -12,-12, 8, 6, 8, ... и т.д. 27 ответов. Выбираем максимальный ответ (мы же положим максимально хорошо).

    Цитата (Jak @ 28.11.2019)
    Выбираем максимальный ответ

    Цитата (Jak @ 28.11.2019)
    максимальный ответ

    Цитата (Jak @ 28.11.2019)
    и такой вывод! "ты будешь ждать завершение фулхауса".

    Погоди, но это ты такую прогу написал, не я. Суть твоей рекурсии сводится к тому, в конце (на 13картах) ты получишь максимальные комбинации(очки). Ну, до тех пор, пока в колоде нужные карты(их не "вытащил" соперник), ты и будешь собирать эту максимальную руку. За 100к генераций она обязательно проскочит, то все остальные варианты ты отбрасываешь. В чём я не прав?

    Цитата (Jak @ 28.11.2019)
    А я именно беру карты по порядку!

    От того, что ты берёшь карты по порядку, по сути ничего не меняется. Если колода позволяет собрать макс. комбинацию(для 1-2 карт уже лежащих в линии со старта), её ты и будешь собирать. И только если она вылетит из возможных(тупо нет троек, чтобы закончить) переключишься на следующую (максимальную) рангом ниже. Если сможешь, конечно.

    Цитата (Jak @ 28.11.2019)
    Только может прийти так: 3хх+abc+def+333

    Лол. Вот именно. Однажды поймав возможность собрать карэ(в 100к генерации из 12карт) ты так и будешь выходить на него. До самого упора. Рассчитывая именно на 333 последним подьёмом.
    164/741
    Ответить Цитировать
    0
  • Цитата (Jak @ 28.11.2019)
    И ты уже все места для каре занял

    Хотя стоп. Вроде ты суммируешь и делишь на 27. Так что хотя за карэ и дадут 8 очков, но соберёшь ты его только один раз, а флаш можешь собрать 3-4 раза, итого 12/27 > 8/27.
    Но остаётся вопрос сходимости МК. Нельзя получить результат, обработав менее 1% исходов.
    165/741
    Ответить Цитировать
    0
  • Цитата (БиллиУбили @ 28.11.2019)
    Ну, до тех пор, пока в колоде нужные карты(их не "вытащил" соперник), ты и будешь собирать эту максимальную руку. За 100к генераций она обязательно проскочит, то все остальные варианты ты отбрасываешь. В чём я не прав?

    Последний раз напишу.
    Я не собираю никакую комбинацию. Остальные варианты я не отбрасываю! ВСЕ суммирую. Хорошие и скупы!!!
    Заебался уже писать одно и тоже.
    Цитата (БиллиУбили @ 28.11.2019)
    Цитата (Jak @ 28.11.2019)
    ж). Проверяем так все 27 попыток. Получаем числа: -12,-12, 8, 6, 8, ... и т.д. 27 ответов. Выбираем максимальный ответ (мы же положим максимально хорошо).
    Цитата (Jak @ 28.11.2019)
    Выбираем максимальный ответ
    Цитата (Jak @ 28.11.2019)
    максимальный ответ

    Это разговор про то, что когда попытались разложить три карты на линии, получили 27 разных оценок и выбираем из них лучший вариант. А как выбираешь ты во время игры? Руками? Не самый ли лучший из 27?
    Только тут я выбираю лучший вариант, потом результаты ПО ВСЕМ тройкам складываю и ни отбрасываю "плохие". И эту сумму делю на кол-во троек. Это и будет оценкой позиции. Может быть и плюс большой, может быть и минус большой.
    Когда ты научишься читать и думать?
    Никогда не рассматриваю, что я соберу? Фулл? Стрит? Что будет в конце, то и будет.

    Цитата (БиллиУбили @ 28.11.2019)
    По секрету: КК/АА/7 ~28,5 7/КК/АА ~ 14,0.

    Такие оценки с учетом премии за фантазию. Чтобы стимулировать прогу комбинации, которые ведут к фантазии (QQ+ и сеты вверху) имеют премию 13 очков за будущую фантазию. Не спрашивай, как я получил эту цифру.
    Т.е. если вверху JJ - это 6 очков, то QQ - не 7, а 20 очков. Это премия и прога при раскладывании скорее выберет тот вариант, который приведет к фантазии, чем просто стрит/флеш/фулл в середину.
    23/314
    Ответить Цитировать
    0
  • да уж, тяжело разобраться ))
    Цитата (Jak @ 28.11.2019)
    Я не собираю никакую комбинацию. Остальные варианты я не отбрасываю! ВСЕ суммирую. Хорошие и скупы!!!

    Ты не поверишь, но я делал ровно также. Один в один. Возьмём, для примера, предпоследний подьём.
    а) генерировал тройку (пусть это около 10000 вариантов)
    б) "болванчиком" раскладывал тройку по свободным местам(это ещё около 27 вариантов)
    в) повторял пункт б) до завершения руки(то есть снова генерировал тройки и раскладывал их болванчиком, пусть это 9000 троек и 10 вариантов разложения)
    тогда для каждого варианта из пунктов а+б я могу найти среднее кол-во очков, путём суммирования максимальных очков(для каждой последней тройки, именно тут и подсчитываются очки) и деления их на 9000(из 10 вариантов я выбрал 1, лучший).
    Тогда для 10000*27 вариантов я получу 10000*27 чисел(грубо говоря, матожидание очков). Теперь я могу из 27 выбрать максимальное число и получить 10000 новых чисел. Просуммировать их и разделить на 10000.
    Вуаля, я получу матожидание для завершения текущей(неоконченной) руки.
    Вся беда в том, что я упёрся в производительность(за 1 сек определение всего лишь 50000 комбинаций)
    Теперь, когда я создам словарь и комбинации буду искать по словарю, дело пойдёт быстрее.
    Цитата (Jak @ 28.11.2019)
    Когда ты научишься читать и думать?

    погоди, погоди...не кипятись. Это как в анекдоте про доцента. Раз объяснил, два объяснил...не понимают. Третий раз объяснил, уж сам понял, а они всё нет.

    Цитата (Jak @ 28.11.2019)
    Никогда не рассматриваю, что я соберу? Фулл? Стрит? Что будет в конце, то и будет.

    С этим опять же никто не спорит. Речь шла про 4 карты в линии типа парапара. Нет никакого смысла в твоём алгоритме болванчиком класть туда что-то отличное от фулхауса(до тех пор, пока остались ауты)
    Видимо, у тебя такая высокая производительность, что ты не заморачиваешься на оптимизацию.

    Цитата (Jak @ 28.11.2019)
    13 очков за будущую фантазию. Не спрашивай, как я получил эту цифру.

    ну, с 13 на мой взгляд ты переборщил. Фантазия против обычной руки столько не даёт.
    Как и 28,5.
    Осталось 2 вопроса. Почему в разобранном примере положить 3 в топ выгоднее, чем в мидл. Интуитивно я этого не вижу...
    И второй вопрос про 100к испытаний. Что ты генерируешь? я так и не могу уловить. Если готовые наборы 3+3+3+3, то зачем понадобилась рекурсия? Если тебе известны карты всех подьёмов, то существует единственное разложение с максимальным кол-вом очков, которое находится элементарно.
    Где ты используешь
    Цитата (Jak @ 28.11.2019)
    Имеем С(47,3)=16215 троек

    Цитата (Jak @ 28.11.2019)
    Имеем С(41,3)=10660 троек

    Цитата (Jak @ 28.11.2019)
    Имеем С(38,3)=8436 троек

    То есть ты на каждом прогоне берёшь всего по одной тройке из каждой ~10000?
    То есть одну "случайную" тройку, вторую, третью, четвёртую. Потом новые 4 "случайные" тройки.
    И повторяешь так 100к раз?
    Но позвольте, это даже не 1%. Я вообще удивляюсь, как ты "дорогие" комбинации видишь, по идее всё вообще может перемалываться в скуп. Ты пробовал увеличивать 100к до 1кк и утверждаешь, что ничего не меняется?(меняется на доли%)
    166/741
    Ответить Цитировать
    0
  • Цитата (БиллиУбили @ 28.11.2019)
    Речь шла про 4 карты в линии типа парапара. Нет никакого смысла в твоём алгоритме болванчиком класть туда что-то отличное от фулхауса(до тех пор, пока остались ауты)

    Ну, почему? Часто бывает так: внизу 2+2, в миде есть пара и мелкая карта с живыми аутами, в топе две картинки, типа QK. Пришел мусор, не подходит никуда. Считаем шансы на покупку второй пары к нашей карте в миде + шансы на покупку картинки в топ (+фанта), и тогда кладем лучшую по аутам карту в мид (для второй пары) и любую в низ. Просто убиваем внизу 2+2. За то имеем шанс поймать вторую пару в мид и фанту вверх.
    Цитата (БиллиУбили @ 28.11.2019)
    Если готовые наборы 3+3+3+3, то зачем понадобилась рекурсия? Если тебе известны карты всех подьёмов, то существует единственное разложение с максимальным кол-вом очков, которое находится элементарно.

    А вот тут по-подробней. Они известны мне, но для чистоты я не могу заглядывать вперед, прога получает их по мере надобности. Просто выбрать макс из общей кучи из 12 карт - это неверно. Пусть у тебя в куче (444466668932), кажется, что можно собрать 2 каре, но они могу прийти так: 896+324+666+444 - вот и нет ни одного каре. К приходу каре места уже будут заняты, мы же не знали что придет и не могли заранее не занимать места.
    Да и даже в случае кучи, можно собрать флеш+флеш+KQх=12, а можно флеш+(2+2)+QQ=11, вроде 11 меньше, но имеем фанту!
    Цитата (БиллиУбили @ 28.11.2019)
    ну, с 13 на мой взгляд ты переборщил. Фантазия против обычной руки столько не даёт.

    Ну, тут все легко. Это уже давно считал, недавно перепроверял.
    Фанта14 дает в среднем 12,45 из 7500000 попыток. Из них 10,96% повтор, каждая девятая (внизу каре+ или в топе тройка). Т.е. фанта14 дает 12,45*1,1096=13,81.
    Фанта15 дает 13,85 за 5000000 попыток (я думал будет больше), но! повторов - 14,49% (каждая седьмая фанта - повтор), итого 13,85*1,1449=15,86.
    24/314
    Ответить Цитировать
    0
  • Цитата (Jak @ 29.11.2019)
    Считаем шансы на покупку второй пары к нашей карте в миде + шансы на покупку картинки в топ (+фанта)

    Напомни, плиз, как мы это считаем: в голове или с помощью проги?
    делаем генерацию из различных 3+3 и гоняем?

    Цитата (Jak @ 29.11.2019)
    К приходу каре места уже будут заняты, мы же не знали что придет и не могли заранее не занимать места

    И мы снова возвращаемся к вопросу, который ты игнорируешь. Зачем нам генерировать последовательность 3+3+3+3, если уже первую тройку мы раскладываем вслепую(но с учётом всех(?) возможных следующих 3+3+3. Или не всех?)
    Что толку нам от последующих конкретных 3+3+3, если уже 2ой подьём мы кладём "правильно" и, по идее, методом МК нам надо сокращать кол-во именно вторых подьёмов. С С(47,3) до 100к, ты так и делаешь?
    Цитата (Jak @ 29.11.2019)
    вроде 11 меньше, но имеем фанту!

    Это не противоречит моему утверждению о единственном раскладе, дающем максимум очков. Очки = очки за руку + очки за фантазию

    Цитата (Jak @ 29.11.2019)
    Ну, тут все легко. Это уже давно считал, недавно перепроверял

    Ну, тут я перепутал абсолютное значение очков и разницу, согласен. Обычно соперник что-то да соберёт, так что чуток очков можно скинуть. Хотя, если у него скуп, может и возрасти. В общем, за рукой соперника надо тщательно следить. Если, как ты говоришь, ему не везёт, и он собрать ничего толкового не может, надо больше рисковать, так как в случае твоего и его скупа ты проигрываешь 0, а не минимум -6(или ещё больше, если он соберёт очковые комбинации)
    167/741
    Ответить Цитировать
    0
  • Цитата (БиллиУбили @ 29.11.2019)
    И мы снова возвращаемся к вопросу, который ты игнорируешь. Зачем нам генерировать последовательность 3+3+3+3, если уже первую тройку мы раскладываем вслепую(но с учётом всех(?) возможных следующих 3+3+3. Или не всех?)
    Что толку нам от последующих конкретных 3+3+3, если уже 2ой подьём мы кладём "правильно" и, по идее, методом МК нам надо сокращать кол-во именно вторых подьёмов. С С(47,3) до 100к, ты так и делаешь?

    Такую последовательность я генерирую только в одном случае: расклад первой пятерки.
    Всего раскладов 192, от всех пяти вниз до двух любых вверх. Все варианты по 12 карт проверить невозможно, беру достаточно большое число, пусть 100к - красиво. Не нравится давай возьмем 98456 вариантов. Начинал вообще с 10000. И сразу их запоминаю. Для чего?
    Выборка на самом деле маленькая.
    Нам ведь надо что узнать? Какой вариант из двух лучший, так? А точней, лучший из всех 192-х. Абсолютное значение не важно.
    Для того, чтобы не было перекоса, вдруг кому-то придет выдающаяся 12ка. Чтобы не было перекоса и все расклады были в равных условиях, я их все прогоняю на одних и тех же 3+3+3+3. Все становятся в одинаковые условия + не надо генерировать каждый раз новую последовательность.
    Раньше прогонял каждый вариант отдельно на 100к. Т.е. чтобы узнать какой лучше, надо было посчитать все 192, вдруг 190-й - самый-самый? А сейчас пишу вариант наоборот, цикл 100к и внутри каждый вариант сразу. И через некоторое число попыток можно уже отсеять плохие и заниматься только хорошими.

    Все остальные случаи уже легче. Когда есть только 5 карт, конечно тоже МК, а вот 7, 9, 11 на руках уже могу полным перебором. 7 наших карт правда для полного перебора надо примерно 4 минуты, а вот если у нас 9 и больше не больше 2сек. Даже если мы одни и все остальные карты в колоде.
    25/314
    Ответить Цитировать
    0
  • Цитата (Jak @ 29.11.2019)
    Нам ведь надо что узнать? Какой вариант из двух лучший, так?

    Вон оно что, Михалыч...

    Пока пишу ответ, будь добр, прогони пару примеров.
    а) стартер
    б) у нас



    сбросили

    опп




    пришли
    168/741
    Ответить Цитировать
    0
  • Цитата (Jak @ 29.11.2019)
    Чтобы не было перекоса и все расклады были в равных условиях, я их все прогоняю на одних и тех же 3+3+3+3


    Цитата (Jak @ 29.11.2019)
    А сейчас пишу вариант наоборот, цикл 100к и внутри каждый вариант сразу. И через некоторое число попыток можно уже отсеять плохие и заниматься только хорошими.


    Круто! Твоё решение напомнило мне

    там как бы для всех 192 разложенией идёт поколение за поколением. То есть, по идее, выявляются 96 лучших, потом они тестируются дальше(возможно, на "новых" 3+3+3+3), снова отсеивается половина и т.д. Ну, до тех пор пока не выявится абсолютный максимум
    Как это работает в природе, никто не знает. Там возможны скачки и не факт, что отброшенные варианты не смогут прибавить. Но тут вроде непрерывный процесс...вряд ли лидер по очкам может неожиданно "сдуться".

    Цитата (Jak @ 29.11.2019)
    а вот если у нас 9 и больше не больше 2сек

    Сколько, если не секрет, это требует вызовов процедуры "определить комбинацию из 5 карт"? Просто я это делаю каждый раз заново. А, теоретически, мог бы заранее определить какие карты какую комбинацию образуют и искать уже в этой базе.
    169/741
    Ответить Цитировать
    0
  • Цитата (БиллиУбили @ 29.11.2019)
    б) у нас


    Ответ тут зависит от настроек и типа игры. Получается 12 ответов.
    Бонусы - три разных (премия 0, премия на простой китай =14, премия на прогрессивный =16).
    Штраф за скуп. 0, 6, 12, 18. 18 ввел недавно, тк заметил, что в реальной игре, если кто скупится он теряет примерно 18-20 постоянно. Т.е. 12 - это мало.
    Все эти параметры влияют на ответ.

    Полный перебор всех 27 вариков.
    Подъем , например 2:120:4,096b - значит 2: варик по счету (от 1 до 27), (120) первая карта на первую линию в топ, вторая карта на вторую линию в мид, третья карта 0-никуда. 4,096b - кол-во бонусов за этот варик. И так по всем варикам.
    Например максимальный, это 24 вариант - 24: 023, 7,568b. Карты первая никуда(0), вторая в мид(2), третья в низ(3), бонус 7,568.

    По столбцам штраф за скуп: 0, -6, -12, -18
    Вариант, когда нет бонусов за фанту:
    2: 120, 4,096b // 2: 120, -0,427b // 2: 120, -4,950b // 2: 120, -9,474b
    3: 130, 0,068b // 3: 130, -5,880b // 3: 130, -11,829b // 3: 130, -17,778b
    4: 210, 2,568b // 4: 210, -0,080b // 4: 210, -2,728b // 4: 210, -5,376b
    5: 220, 6,144b // 5: 220, 2,985b // 5: 220, -0,174b // 5: 220, -3,333b
    6: 230, 0,000b // 6: 230, -0,708b // 6: 230, -1,415b // 6: 230, -2,123b
    7: 310, 0,000b // 7: 310, -1,727b // 7: 310, -3,454b // 7: 310, -5,182b
    8: 320, 0,000b // 8: 320, -0,183b // 8: 320, -0,365b // 8: 320, -0,548b
    11: 102, 2,352b // 11: 102, -2,766b // 11: 102, -7,884b // 11: 102, -13,002b
    12: 103, 4,746b // 12: 103, 0,734b // 12: 103, -3,279b // 12: 103, -7,291b
    13: 201, 2,917b // 13: 201, 1,785b // 13: 201, 0,652b // 13: 201, -0,480b
    14: 202, 0,000b // 14: 202, -6,000b // 14: 202, -12,00b // 14: 202, -18,000b
    15: 203, 7,340b // 15: 203, 7,115b // 15: 203, 6,889b // 15: 203, 6,663b
    16: 301, 0,000b // 16: 301, -1,186b // 16: 301, -2,371b // 16: 301, -3,557b
    17: 302, 0,000b // 17: 302, -1,171b // 17: 302, -2,343b // 17: 302, -3,514b
    20: 012, 2,198b // 20: 012, 0,169b // 20: 012, -1,860b // 20: 012, -3,889b
    21: 013, 3,994b // 21: 013, 2,829b // 21: 013, 1,664b // 21: 013, 0,498b
    22: 021, 3,063b // 22: 021, 2,723b // 22: 021, 2,382b // 22: 021, 2,042b
    23: 022, 4,250b // 23: 022, 1,091b // 23: 022, -2,068b // 23: 022, -5,227b
    24: 023, 7,568b // 24: 023, 7,568b // 24: 023, 7,568b // 24: 023, 7,568b
    25: 031, 0,000b // 25: 031, -1,179b // 25: 031, -2,359b // 25: 031, -3,538b
    26: 032, 0,000b // 26: 032, -1,171b // 26: 032, -2,343b // 26: 032, -3,514b

    Вариант, когда за фанту14 дают 14.
    2: 120, 7,542b // 2: 120, 3,019b // 2: 120, -1,504b // 2: 120, -6,027b
    3: 130, 0,188b // 3: 130, -5,761b // 3: 130, -11,709b // 3: 130, -17,658b
    4: 210, 2,568b // 4: 210, -0,080b // 4: 210, -2,728b // 4: 210, -5,376b
    5: 220, 6,144b // 5: 220, 2,985b // 5: 220, -0,174b // 5: 220, -3,333b
    6: 230, 0,000b // 6: 230, -0,708b // 6: 230, -1,415b // 6: 230, -2,123b
    7: 310, 0,000b // 7: 310, -1,727b // 7: 310, -3,454b // 7: 310, -5,182b
    8: 320, 0,000b // 8: 320, -0,183b // 8: 320, -0,365b // 8: 320, -0,548b
    11: 102, 4,410b // 11: 102, -0,708b // 11: 102, -5,826b // 11: 102, -10,944b
    12: 103, 9,384b // 12: 103, 5,372b // 12: 103, 1,359b // 12: 103, -2,653b
    13: 201, 2,917b // 13: 201, 1,785b // 13: 201, 0,652b // 13: 201, -0,480b
    14: 202, 0,000b // 14: 202, -6,000b // 14: 202, -12,000b // 14: 202, -18,000b
    15: 203, 7,340b // 15: 203, 7,115b // 15: 203, 6,889b // 15: 203, 6,663b
    16: 301, 0,000b // 16: 301, -1,186b // 16: 301, -2,371b // 16: 301, -3,557b
    17: 302, 0,000b // 17: 302, -1,171b // 17: 302, -2,343b // 17: 302, -3,514b
    20: 012, 2,198b // 20: 012, 0,169b // 20: 012, -1,860b // 20: 012, -3,889b
    21: 013, 3,994b // 21: 013, 2,829b // 21: 013, 1,664b // 21: 013, 0,498b
    22: 021, 3,063b // 22: 021, 2,723b // 22: 021, 2,382b // 22: 021, 2,042b
    23: 022, 4,250b // 23: 022, 1,091b // 23: 022, -2,068b // 23: 022, -5,227b
    24: 023, 7,568b // 24: 023, 7,568b // 24: 023, 7,568b // 24: 023, 7,568b
    25: 031, 0,000b // 25: 031, -1,179b // 25: 031, -2,359b // 25: 031, -3,538b
    26: 032, 0,000b // 26: 032, -1,171b // 26: 032, -2,343b // 26: 032, -3,514b

    Вариант прогрессивного китая, 16 за фанту.
    2: 120, 8,034b // 2: 120, 3,511b // 2: 120, -1,012b // 2: 120, -5,535b
    3: 130, 0,205b // 3: 130, -5,744b // 3: 130, -11,692b // 3: 130, -17,641b
    4: 210, 2,568b // 4: 210, -0,080b // 4: 210, -2,728b // 4: 210, -5,376b
    5: 220, 6,144b // 5: 220, 2,985b // 5: 220, -0,174b // 5: 220, -3,333b
    6: 230, 0,000b // 6: 230, -0,708b // 6: 230, -1,415b // 6: 230, -2,123b
    7: 310, 0,000b // 7: 310, -1,727b // 7: 310, -3,454b // 7: 310, -5,182b
    8: 320, 0,000b // 8: 320, -0,183b // 8: 320, -0,365b // 8: 320, -0,548b
    11: 102, 4,704b // 11: 102, -0,414b // 11: 102, -5,532b // 11: 102, -10,650b
    12: 103, 10,046b // 12: 103, 6,034b // 12: 103, 2,022b // 12: 103, -1,990b
    13: 201, 2,917b // 13: 201, 1,785b // 13: 201, 0,652b // 13: 201, -0,480b
    14: 202, 0,000b // 14: 202, -6,000b // 14: 202, -12,000b // 14: 202, -18,000b
    15: 203, 7,340b // 15: 203, 7,115b // 15: 203, 6,889b // 15: 203, 6,663b
    16: 301, 0,000b // 16: 301, -1,186b // 16: 301, -2,371b // 16: 301, -3,557b
    17: 302, 0,000b // 17: 302, -1,171b // 17: 302, -2,343b // 17: 302, -3,514b
    20: 012, 2,198b // 20: 012, 0,169b // 20: 012, -1,860b // 20: 012, -3,889b
    21: 013, 3,994b // 21: 013, 2,829b // 21: 013, 1,664b // 21: 013, 0,498b
    22: 021, 3,063b // 22: 021, 2,723b // 22: 021, 2,382b // 22: 021, 2,042b
    23: 022, 4,250b // 23: 022, 1,091b // 23: 022, -2,068b // 23: 022, -5,227b
    24: 023, 7,568b // 24: 023, 7,568b // 24: 023, 7,568b // 24: 023, 7,568b
    25: 031, 0,000b // 25: 031, -1,179b // 25: 031, -2,359b // 25: 031, -3,538b
    26: 032, 0,000b // 26: 032, -1,171b // 26: 032, -2,343b // 26: 032, -3,514b

    Понимаю, что не удобно, когда много циферок, но не знаю как еще наглядней представить. Тут еще на форуме все сжимается.

    Тут полный перебор. Никакого МК. Можно использовать для сравнения наших результатов. Если где у тебя не так, пиши.
    Можно еще сделать выводы, как разные условия влияют на ответ. Где-то влияют, где-то нет.

    Задачка про стартер еще более усложняется. Тут вообще море вариантов. Все зависит от типа игры и ограничений. Например, для скорости я могу запретить вверх ложить карты меньше валета, только картинки или две карты, если одна их них картинка. И т.д. вариантов вообще куча. Тебе какой?

    Цитата
    Сколько, если не секрет, это требует вызовов процедуры "определить комбинацию из 5 карт"? Просто я это делаю каждый раз заново. А, теоретически, мог бы заранее определить какие карты какую комбинацию образуют и искать уже в этой базе.

    Только когда есть все 13 карт, все линии заполнены.
    Как только положил карту на любую линию, сразу считаю смещение в массиве. Как появляется 3-я карта в топе или 5-я карта в миде или внизу (линия закрыта), сразу обращаюсь один раз в массив и беру там силу комбинации, в которой есть инфа про комбу (флеш, стрит, каре или 2+2) и все кикеры для сравнения одинаковых комб по уровню. Любое "определить комбинацию из 5 карт" занимает 5 или 3 обращения к массиву.

    ЗЫ. 24 и 15 везде лучшие.
    26/314
    Ответить Цитировать
    0
  • Готов выложить пробную версию калька, не знаю как залить.
    Прога и 3 файла с данными для счета ~38 мегов.

    Вверху колода.
    Ниже два оппа, еще ниже наши карты. Сверху 5 карт - тут новые 3 карты при подъемах или стартер 5 карт. Слева от наших карт, наши сброшенные карты.
    Справа от каждой линии выбор, кружок. Выбираете его и на поле выбираете карты.
    Убрать последнюю карту - (Alt-Esc).

    Как только появится возможность положить 3 или 5 карт появится кнопка счета.
    Если заполнить все 13 наших карт + новых 1,2,3,4 карты - появится возможность посчитать фанту. При фанте дает 2 варианта, левый опп - это с бонусами 12 очков на повтор фанты, справа опп - просто максимальный вариант (могут не совпадать).

    Подъем 3 карты.
    0 - Number. Если "0", считаем все варианты. Если конкретная цифра, считается только она.
    Ниже - кол-во вариантов, когда имеем 5 карт и 7 карт. 9, 11 - считаются полным перебором, там мало вариантов.
    Тут стоит задержка, чтобы не использовали онлайн. Считает быстро, но результаты появятся минимум через 10 сек.

    Стартер 5 карт.
    Время, 30 сек. Время после которого, подпрограмма счета вывалится из расчетов, иногда можно не рассчитать время и ждать долго.
    Считает в 3 этапа. Первый этап (тут 200), кол-во вариантов на каждый расклад (их 192), потом берется 10 лучших и пересчитываются побольше вариантов (тут 1000).

    Можно сохранить позицию и потом ее загрузить.

    Full 3. Есть возможность академически посчитать подъем 3 карт для 5 и 7 наших. Пока убрал.

    Bonus. Бонусы - либо "0", либо "14" - для простого китая и "16" для прогресса.
    Накладывают ограничения, для QQ - вверх кладет только T,J,Q,K, другие не кладет. Для KK-16 вверх еще тузы можно. При "0" любые карты идут вверх, но тогда нет премии для бонусов вверху, т.е. прога не будет стремиться положить вверх QQ+.

    Scoop. Штрафы за скуп. Тоже играет роль, т.е. сравнивает не по шансам купить фанту? или застрелиться.
    27/314
    Ответить Цитировать
    0
  • Напишу сюда контрольные суммы, чтобы никакая п***да не добавила ничего в файл.

    China2All.exe - ссылка

    SHA-1 6E08B6782EF09A5ACE41B030D6B4A572F88A2228
    MD5 9F413D8955D98F8780C2F75A5A70456E

    или можно сархивировать с паролем, тогда никто ничего не добавит в exe.
    28/314
    Ответить Цитировать
    0
  • Jak, Jak и билли убили зарубились не на шутку , очень интересно но нужно сначала блок читать чтобы хоть чуть въехать.
    1/27
    Ответить Цитировать
    0
  • Поменял исполняемый файл. В той версии ошибка.

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