Re: "gamsoft.ru" vs "oasispoker.ru". ID:24844 ответ на 24368 |
Пт, 1 декабря 2006 18:10 («] [#] [») |
|
|
Все было бы понятнее, если бы по технологии игры нам всегда платили анте, а потом предлагали купить игру за 2. Суть не меняется, но расчеты прозрачнее.
|
|
|
Re: "gamsoft.ru" vs "oasispoker.ru". ID:24845 ответ на 24368 |
Пт, 1 декабря 2006 18:21 («] [#] [») |
|
|
Заодно, озвучте плиз цифру для стрита A2345 vs T (масть дилера чистая) с учетом покупки дилером стрита/флеша. Интересно насколько будет хуже чем 5,4435 для "только пара"
|
|
|
Re: "gamsoft.ru" vs "oasispoker.ru". ID:24846 ответ на 24368 |
Пт, 1 декабря 2006 20:33 («] [#] [») |
|
|
Korovin писал пт, 01 декабря 2006 18:21 | Заодно, озвучте плиз цифру для стрита A2345 vs T (масть дилера чистая) с учетом покупки дилером стрита/флеша. Интересно насколько будет хуже чем 5,4435 для "только пара" | vs
Не совсем понял про чистую масть, но вот при таком случае -
5,43547332 (при проигрыше игрок бет+анте теряет).
Без покупки игры 5,31515152
|
|
|
Re: "gamsoft.ru" vs "oasispoker.ru". ID:24847 ответ на 24368 |
Сб, 2 декабря 2006 03:27 («] [#] [») |
|
|
Спасибо, и так сойдет. Тоже с "только парой" 5.4530. Я к тому, что выигрыш МО при таком методе на стритах похоже не компенсирует потери расчетного МО на флешах и выше, как я предполагал раньше. Но уж больно долгой эта точная функция получается. В принципе, мы можем заранее создать табличку +МО от покупки игры для каждой уникальной руки из 5 карт vs карта дилера. и брать цифры оттуда, не замедляя процесс расчетов. Минус: мы получим точные данные только для первого бокса без обменов, но как часто мы принимая решение о покупке игры используем доп. данные? Меня бы этот подход устроил хотябы тем, что получится еще быстрее чем сейчас и точнее.
|
|
|
Re: "gamsoft.ru" vs "oasispoker.ru". ID:24848 ответ на 24368 |
Сб, 2 декабря 2006 18:54 («] [#] [») |
|
|
Korovin писал сб, 02 декабря 2006 02:27 | В принципе, мы можем заранее создать табличку +МО от покупки игры для каждой уникальной руки из 5 карт vs карта дилера. и брать цифры оттуда, не замедляя процесс расчетов. Минус: мы получим точные данные только для первого бокса без обменов, но как часто мы принимая решение о покупке игры используем доп. данные? Меня бы этот подход устроил хотябы тем, что получится еще быстрее чем сейчас и точнее. | У меня есть другая идея. Всего существуют C{12,4} = 495 вариантов набора рангов для руки дилера (без мастей) по одной известной карте. Из них несколько стрейтов и АК. Их отбрасываем. Оставшиеся группируем по сносимой карте. Например с приведенным выше фулом против Тройки дилера получаем 120 групп, которые нужно просчитать (см. аттач). В квадратных скобках даны ранги на снос. Далее уже можно выводить формулу...
|
Вложение:
by3.txt
(Размер: 1.93KB, Загружено 203 раз)
|
|
|
|
Re: "gamsoft.ru" vs "oasispoker.ru". ID:24849 ответ на 24368 |
Сб, 2 декабря 2006 19:47 («] [#] [») |
|
|
Например, берем первую строчку из файла:
2345* [7,8,9,T,J,Q,K]
Буду обозначать количество свободных рангов в колоде как C2..CA (могут быть от 0..4 для каждого ранга)
Теперь формула левой части: F = C2*C4*C5
Формула коэффициента (то что в квадратных скобках): K = C7+C8+C9+CT+CJ+CQ+CK
Тут нужно сделать поправку на флешь!! это чуть сложнее и об этом позже.
Формула стрейта: FS = (CA+C6)*F
Формула пар: FP = ((C2-1)+C3+(C4-1)+(C5-1))*F
Ну и посчитать флешь (и стрейт-флешь) само собой.. вычесть стрейт-флешь из стрейтов и флешей.
Аналогично проделать для оставшихся групп. Но собстно на этом оптимизация не заканчивается, коэффициенты часто повторяются. А левую часть тоже можно перегруппировать... примерно так
|
|
|
Re: "gamsoft.ru" vs "oasispoker.ru". ID:24850 ответ на 24368 |
Сб, 2 декабря 2006 21:17 («] [#] [») |
|
|
Это может сработать. Немного доработать и будет быстро и точно
|
|
|
Re: "gamsoft.ru" vs "oasispoker.ru". ID:24851 ответ на 24368 |
Сб, 2 декабря 2006 21:57 («] [#] [») |
|
|
Развиваю мысль дальше: нужно просчитать каждую строчку 2 раза. То есть как мастевый и немастевый по левой части. Возвращаясь к первой строчке файла:
1-ый проход: 2345(s)* [7,8,9,T,J,Q,K]
2-ой проход: 2345(o)* [7,8,9,T,J,Q,K]
Итак в первом проходе число комбинаций: F1=2s*4s*5s (=1 если эти карты есть в колоде или 0), а коэффициент равен K1=C7+C8+C9+CT+CJ+CQ+CK-7s-8s-9s-Ts-Js-Qs-Ks
Во втором проходе: F2=C2*C4*C5-F1, тогда как K2=C7+C8+C9+CT+CJ+CQ+CK
Понятно, что во втором проходе флешей быть не может в принципе, остаются только стрейты и пары. Стоит отметить, что не для каждой строчки возможны стрейты..
|
|
|
Re: "gamsoft.ru" vs "oasispoker.ru". ID:24852 ответ на 24368 |
Сб, 2 декабря 2006 22:13 («] [#] [») |
|
|
Все отлично вписывается в табличный вид.. Одна проблема: избежать if..then при определении выгодно/невыгодно покупать.. Есть мысли?
|
|
|
Re: "gamsoft.ru" vs "oasispoker.ru". ID:24853 ответ на 24368 |
Вс, 3 декабря 2006 15:37 («] [#] [») |
|
|
Sharky писал сб, 02 декабря 2006 22:13 | Одна проблема: избежать if..then при определении выгодно/невыгодно покупать.. Есть мысли? | Зачем? оптимизация кода?
|
|
|
Re: "gamsoft.ru" vs "oasispoker.ru". ID:24854 ответ на 24368 |
Вс, 3 декабря 2006 16:18 («] [#] [») |
|
|
KID писал вс, 03 декабря 2006 14:37 | Sharky писал сб, 02 декабря 2006 22:13 | Одна проблема: избежать if..then при определении выгодно/невыгодно покупать.. Есть мысли? | Зачем? оптимизация кода? | Ну а как ты думаешь?
2 Korovin: Хотел услышать мнения на сей счет.. Как такой подход? Собстно, почти закончил реализацию сего алгоритма.. Есть конечно камушки, но всеж лучше, чем 50-60K комбинаций обсчитывать...
|
|
|
Re: "gamsoft.ru" vs "oasispoker.ru". ID:24855 ответ на 24368 |
Вс, 3 декабря 2006 17:09 («] [#] [») |
|
|
Идея понятна. Делаем заготовки для каждой КД, потом по ним проходим Мои замечания:
1. Если сносится КД, считаем флеши по всем мастям, иначе только по масти КД
2. Для стритов/флешей нужно учитывать число стритов/флешей младше/страше/равно нашему.
Какое время расчете для одной руки получается в сравнении с подсчетом числа рук дилера младше/старше/равно?
|
|
|
Re: "gamsoft.ru" vs "oasispoker.ru". ID:24856 ответ на 24368 |
Вс, 3 декабря 2006 17:33 («] [#] [») |
|
|
Korovin писал вс, 03 декабря 2006 16:09 | Идея понятна. Делаем заготовки для каждой КД, потом по ним проходим Мои замечания:
1. Если сносится КД, считаем флеши по всем мастям, иначе только по масти КД
2. Для стритов/флешей нужно учитывать число стритов/флешей младше/страше/равно нашему. | 1. Точно так.
2. К сожалению тоже.
Korovin писал вс, 03 декабря 2006 16:09 | Какое время расчете для одной руки получается в сравнении с подсчетом числа рук дилера младше/старше/равно? | Если правильно понял, то быстрее будет.. Но скорость еще не мерил.
|
|
|
Re: "gamsoft.ru" vs "oasispoker.ru". ID:24857 ответ на 24368 |
Вс, 3 декабря 2006 18:05 («] [#] [») |
|
|
Если скорость будет сопоставима и даже меньше, то поставив фильтр "считать от тройни", практически не заметим разницы, а это уже прорыв (для меня по крайней мере).
Отвлекаясь к подсчету числа рук дилера: Я так понимаю что у тебя комбинации дилера по тому же принципу считаются? Позволю себе в кратце описать свой метод. Я тоже испоьзую массив из числа свободных номаналов карт, затем:
Считаем число пустых рук дилера, если у нас пусто, то все иначе
если у нас ТК, считаем число ТК младше и равно и все, иначе
считаем число всех ТК, затем если у нас пара то считаем число пар младше/равно и все, иначе считаем число всех пар,...
Скорости у меня чуть меньше, но я не использую заготовки, а перебираю номаналы, формируя адрес к одной большой и универсальной таблице. Идея с заготовками мне понравилась.
|
|
|
Re: "gamsoft.ru" vs "oasispoker.ru". ID:24858 ответ на 24368 |
Вс, 3 декабря 2006 18:33 («] [#] [») |
|
|
Korovin писал вс, 03 декабря 2006 17:05 | Отвлекаясь к подсчету числа рук дилера: Я так понимаю что у тебя комбинации дилера по тому же принципу считаются? Позволю себе в кратце описать свой метод. Я тоже испоьзую массив из числа свободных номаналов карт, затем:
Считаем число пустых рук дилера, если у нас пусто, то все иначе
если у нас ТК, считаем число ТК младше и равно и все, иначе
считаем число всех ТК, затем если у нас пара то считаем число пар младше/равно и все, иначе считаем число всех пар,... | Я считаю по-другому, но тоже использую массивы рангов.. Основа у меня подсчет вероятностей всех возможных рук дилера.. Если у дилера возможна комбинация аналогичная руке, то просчитываю больше/меньше/равно только для конкретной комбинации..
|
|
|
Re: "gamsoft.ru" vs "oasispoker.ru". ID:24859 ответ на 24368 |
Вс, 3 декабря 2006 20:47 («] [#] [») |
|
|
Korovin писал вс, 03 декабря 2006 18:05 | Считаем число пустых рук дилера, если у нас пусто, то все иначе
если у нас ТК, считаем число ТК младше и равно и все, иначе
считаем число всех ТК | Как можно посчитать число пустых рук дилера, не посчитав предварительно количество всех ТК и остальных комбинаций? Ума не приложу. Километровая формула?
|
|
|
Re: "gamsoft.ru" vs "oasispoker.ru". ID:24860 ответ на 24368 |
Пн, 4 декабря 2006 01:24 («] [#] [») |
|
|
Цитата: | Я считаю по-другому, но тоже использую массивы рангов.. Основа у меня подсчет вероятностей всех возможных рук дилера.. Если у дилера возможна комбинация аналогичная руке, то просчитываю больше/меньше/равно только для конкретной комбинации |
Цитата: | Как можно посчитать число пустых рук дилера, не посчитав предварительно количество всех ТК и остальных комбинаций? Ума не приложу. Километровая формула? | Согласитесь, что так как большинство анализируемых рук игрока это пустые, ТК и пары (пустые и пары если ТК не играет), то мой метод значительно сокращает объем вычислений при статистических исследованиях покера (я даже не стал оптимизировать расчет рук от двух пар и выше, так как потеря в скорости всего 10% - считаю влоб).
Главная проблема здесь действительно подсчет числа пустых, но она решается. Составим заранее таблицу work: array[0..12,0..12,0..12,0..12,0..12], параметрами которой будут число пустых номиналов в колоде, номиналов с 1 картой, двумя тремя и четырньмя соответственно. В самой таблице - число беспарных комбинаций для этих условий на 4-х картах. Допустим, ТК не иргает, у дилера 7. Проходим массив рангов от 2 до A, исключая 7 и формируем адрес к нашей таблице, по которому находим число беспарок. Отнимаем от него число стритов и флешей. ВСЕ. Если ТК игрет, чуть сложнее. Пусть у дилера таже 7. Проходим массив номиналов дважды, от 2 до K, исключая 7 и от 2 до A, исключая 7 и К. Если у дилера A или K, то один раз от 2 до Q. Таким же способом можно очень быстро посчитать и число ТК и число пар.
Shakli, может быть ты найдеш в этом способ сделать свое ядро еще быстрее?
|
|
|
Re: "gamsoft.ru" vs "oasispoker.ru". ID:24861 ответ на 24368 |
Пн, 4 декабря 2006 08:31 («] [#] [») |
|
|
Korovin писал пн, 04 декабря 2006 00:24 | Shakli, может быть ты найдеш в этом способ сделать свое ядро еще быстрее? | Не думаю, что мне это подойдет.. Для тренажера необходимо выводить все вероятности обменов и рук дилера. Для этого нужно все считать... Или я может не понял идею?
|
|
|
Re: "gamsoft.ru" vs "oasispoker.ru". ID:24862 ответ на 24368 |
Пн, 4 декабря 2006 10:43 («] [#] [») |
|
|
Вероятность обменов тут не причем. Наоборот, чем быстрее ядро считает руки дилера (МО руки), тем быстрее мы просчитаем все варианты обменов. Для руки без обменов можно конечно специально посчитать число возможных вариантов рук дилера, но это уже украшательство, для расчетов МО нам эти цифры не важны. Важно лиш число рук пустых/младше/равно/старше. Я считаю без старших, так как если мы знаем общее число рук, оно получается проствм вычитанеим. Почему я считаю снизу а не сверху, я уже пояснил - для большинства анализируемых рук расчетов получается меньше.
|
|
|
Re: "gamsoft.ru" vs "oasispoker.ru". ID:24863 ответ на 24368 |
Пн, 4 декабря 2006 12:35 («] [#] [») |
|
|
Korovin писал пн, 04 декабря 2006 01:24 |
Главная проблема здесь действительно подсчет числа пустых, но она решается. Составим заранее таблицу work: array[0..12,0..12,0..12,0..12,0..12], параметрами которой будут число пустых номиналов в колоде, номиналов с 1 картой, двумя тремя и четырньмя соответственно. В самой таблице - число беспарных комбинаций для этих условий на 4-х картах. Допустим, ТК не иргает, у дилера 7. Проходим массив рангов от 2 до A, исключая 7 и формируем адрес к нашей таблице, по которому находим число беспарок. Отнимаем от него число стритов и флешей. ВСЕ. Если ТК игрет, чуть сложнее. Пусть у дилера таже 7. Проходим массив номиналов дважды, от 2 до K, исключая 7 и от 2 до A, исключая 7 и К. Если у дилера A или K, то один раз от 2 до Q. Таким же способом можно очень быстро посчитать и число ТК и число пар. | Я так понял несколько разных цыклов? А если посчитать все комбинации и вычесть из общего числа, не быстрее будет? там веть почти нет цыклов, восновном формулы в одну строчку. Цыклом считается предварительно только количество номиналов в колоде по 4 по 3 и т.д. ну и на стрейтфлешике циклик не большой.
Дак какой всетаки щас рекорд скорости для случайной руки? Может огласите хотябы приблизительно?
|
|
|