| ||||
| ||||
|
Важные объявления |
|
03.11.2005, 04:49 TS | #1 (permalink) |
Увлечённый
Регистрация: 26.10.2005
Адрес: Провинция
Сообщений: 462
|
Привет всем. Господа программисты помогите найти ошибку. При стандартных правилах: 5–1+1, 1 бокс, играем от ТК, нет страховки, нет покупки, нет 6 карты, замена только 1 карты, без ограничений, выплаты 1-1-2-3-4-5-7-20-50-100. У Лесного около -1%. У меня, хоть тресни, играет лучше на 0,2%...0,3%. Абсолютно уверен, что это не я гениальный программист, а ошибка при подсчете выигрыша или при сравнении комбинаций. Введите в коде массив WIN[206], обнулите его и при каждом выигрыше n ANTE посчитайте статистику выигрышей WIN[n+4]++. Потом, в конце, распечатайте:
cout << MO << endl; for(i=0;i<205;i++) { cout << i-4 << WIN[i] << endl; } ну вы поняли, что смещение на 4 потому что можно проиграть -4 ANTE, а выиграть до 201 ANTE. Распечатку как-нибудь передайте мне. Зарядите не меньше чем 10 млн., можно и больше, если электричества не жалко. Спасибо. |
0 |
03.11.2005, 06:55 | #2 (permalink) |
Ветеран
Регистрация: 12.02.2004
Адрес: Россия, УРФО
Сообщений: 1,399
|
Приветствую!
2 Это Я Хм. Для получения МО игры вовсе не обязательно ее полностью симулировать. Вполне достаточно просуммировать МО рук игрока. Получиться гораздо быстрее. Есстественно если не преследуется цель получения дисперсии. Я бы проверил свой движек так. Взял демку покерного анализатора Блитца, которая позволяет считать МО руки при обмене 1 карты. Задавал исходные комбинации всех типов (пустая, ТК, пара и т.д.) и сравнивал значения возможных комбинаций у дилера. ЗЫ. На выходных будет время, сделаю тебе такой массивчик.
__________________
Mariner Западное полушарие Марса рассечено на протяжении 4 000 км вдоль экватора рифтовыми долинами Маринер - крупнейшим поясом разломов на планете. |
0 |
03.11.2005, 07:53 TS | #3 (permalink) |
Увлечённый
Регистрация: 26.10.2005
Адрес: Провинция
Сообщений: 462
|
Привет Mariner. В том и смысл, что все руки считает идеально точно. Не было этой ошибки раньше, когда такой покер только и считался. Ошибка в сравнение рук при симуляции, либо при счете прибыли (ну в смысле убытков). Хорошо пооптимизировал, а первые версии не сохранились. Но в упор не вижу где ошибка. Есть подозрение, что генератор случайностей выдает на 5% чаще флеш, чем надо (привет online казиношникам). Но на очень большом промежутке не проверял. Либо где-то что-то округляется в мою пользу. При большом числе сдач (желательно 100 млн., когда дисперсия сойдет на нет), при сравнение массива статистики, мне кажется, будет видно аномалию. Это не академический интерес, а метод нахождения хитрой ошибки. МО должно быть около -1.06%. У меня считает 8…10 млн. сдач в час. Так что на пол суток надо запускать. Пока.
|
0 |
03.11.2005, 13:53 | #5 (permalink) |
Бессмертный
Регистрация: 13.02.2004
Адрес: Россия
Сообщений: 3,027
|
Попробуй посчитать не обмен 1-й а покупка шестой, остальное тоже самое. Это самая простая игра для компьютера (из реальных плюсовых). И единственная, для которой я получил АБСОЛЮТНО точное МО ПОЛНЫМ перебором ВСЕХ вариантов +1.76%.
Для пятикартончного боле-иенее точное МО -1% рово, но учти что при симуляции игры даже 10 000 000 раздач отклонение в 0,1% это нормально. |
0 |
03.11.2005, 17:20 TS | #6 (permalink) |
Увлечённый
Регистрация: 26.10.2005
Адрес: Провинция
Сообщений: 462
|
Привет Korovin. Да действительно 10 млн. маловато, надо 100 млн. чтобы отклонение было пара сотых. У меня считается 2 способами: чисто теоретическим (если поставить на цикл 52*с(5,51)=122 млн, можно за 15 часов получить абсолютно точное МО, делится легко на 4 одинаковые масти – еще в 4 раза быстрее); и симуляцией игры типа тренажера в котором играет компьютер. Так вот в первом хорошо считает. А при симуляции всегда лучше на 0,2%...0,3%. Запускал на очень долго. Если провести аналогию с созданным двигателем в 105% КПД. Нет смысла искать ошибку в двигателе, ошибка в работе датчика КПД. Серьезной ошибки нет – проверил все вдоль и поперек. Какая-нибудь тупая ошибка типа попутан знак +-, либо грубое округление при переводе типов переменных, и просто не совершенный ГСЧ. Начал уже вспоминать китайскую мудрость про поиск черной кошки в темной комнате, если похоже ее там нет.
P.S. А к плюсовым мы еще вернемся, спасибо. |
0 |
03.11.2005, 18:06 | #7 (permalink) |
Бессмертный
Регистрация: 13.02.2004
Адрес: Россия
Сообщений: 3,027
|
Не понимаю, как это просто разделить на 4, по моему тут надо сжатие мастей применять. У меня для расчета МО используется цикл из 7432 среднестатистических рук, для оценки МО мне этого достаточно. Насчет абсолютной точности, смысла нет. Ну посчитаеш ты точно МО на одном боксе, а на двух, трех, шести?
Расчет МО, это семечки, дойдеш до усреднения стратегий для командной игры, вот там напаришся (если дойдеш конечно). |
0 |
03.11.2005, 21:13 TS | #8 (permalink) |
Увлечённый
Регистрация: 26.10.2005
Адрес: Провинция
Сообщений: 462
|
Наверное, я не ясно объясняю. Попробую еще раз. Подсчет точного МО это не новый вид спорта. Это просто критерий истины при тестировании на наличие ошибок. Эта дурацкая ошибка откинула меня в развитии более чем на 2 месяца назад. Цель этого, я думал давно пройденного этапа, сделать движок, выдающий одно из 3…4 решений: скинуть, закрыться, купить шестую, поменять 00000 или 01000 или 11110 ну и т.д. Дальше при помощи этого движка делаем систему игры. Продолжение в личку…
|
0 |
04.11.2005, 03:00 TS | #9 (permalink) |
Увлечённый
Регистрация: 26.10.2005
Адрес: Провинция
Сообщений: 462
|
Спасибо Mariner уже не надо. Нашел "ошибку". Все до смешного бонально. Генератор случайных чисел имеет влияние на приход определенных последовательностей карт. Усложнив генератор во много раз добился идеального результата.
|
0 |
04.11.2005, 16:51 TS | #10 (permalink) |
Увлечённый
Регистрация: 26.10.2005
Адрес: Провинция
Сообщений: 462
|
2korovin. Теперь можно поиграться. Я правильно понял: покупка за 1 ANTE, потом менять нельзя, покупать игру нельзя, страховаться нельзя и ТК играет. Выплаты стандартные. Расчет 2 способами одновременно 100 млн. раздач за 3 часа. 1 способ математический: МО=1,76039%; второй способ симуляция игры (решения тоже математические) МО=1,75583%. При этом сыграло 526 Роял-флешей и 3974 стрит-флеш. А в стандартном покере МО чуть больше минус единицы: -0,954, возможно -0,924 (почему-то немного разошлось на 2 менее надежном способе, значит, есть мелкая ошибка).
|
0 |
04.11.2005, 18:04 | #11 (permalink) |
Новичок
Регистрация: 25.09.2005
Адрес: Томск
Сообщений: 27
|
У меня просьба ко всем кто считает МО по комбинаторным формулам,
раньше я брал эти формулы на poker.ru, но теперь там все снесли, а я снес свой винт на помойку и теперь придется все начать заново. У кого есть эти формулы, пожалуйста, киньте ссылку или ответьте на форуме. Заранее благодарен... 2_Это Я Как ты усложняешь ГСЧ, у меня тоже часто вылазят мастевые комбинации, после 40-50 млн.раздач получается в 2-2.5 раза чаще чем должно быть по терверу. |
0 |
05.11.2005, 13:05 TS | #12 (permalink) |
Увлечённый
Регистрация: 26.10.2005
Адрес: Провинция
Сообщений: 462
|
Привет rombyk. Не знаю, на чем ты пишешь. Но в встроенная в С++ функция rand() имеет определенные закономерности. Флеши у меня тоже выходили в 2 раза чаще, чем надо. Я чуть с ума не сошел, когда искал ошибку. Потом прикрутил другой генератор – нашел где-то в нете. Стало все вроде нормально. Но оказалось, что тоже на 5…10% больше флешей. Недавно сделал так:
peremeshat=rand()%10; for(i=0;i<peremeshat;i++) fignj=rand(); k[vz]=rand()%13+2; peremeshat=rand()%10; for(i=0;i<peremeshat;i++) fignj=rand(); k_m[vz]=rand()%4; переменная peremeshat принимает случайное значение (допустим до 10). После этого столько раз вхолостую вызывается генератор. После этого он используется по назначению. И так каждый раз перед использованием. Формулы сочетаний, перестановок и т.д. у меня в памяти с института. Нужно просто сходить в библиотеку и взять учебник. Либо по ссылкам на слова “сочетание, перестановка, комбинаторика”. А формула всего одна c(n,m)=n!/(m!(n-m)!). Потом умножаешь или делишь сочетания. |
0 |
05.11.2005, 13:48 | #13 (permalink) |
Участник
Регистрация: 28.10.2005
Адрес: Калуга
Сообщений: 158
|
Друзья!
Есть, возможно, наивный вопрос: А откуда вы берете это МО? Как я думаю: для начала вы должны задать стратегию. Ну там, карту менять тогда-то, пасовать тогда-то. Потом шарахнуть 10 млн. сдач и посмотреть результат. Но это работает только если вы заранее знаете стратегию. А если нет? Тогда я думю следующее. Делаем 10 млн. сдач Для каждой сдачи осуществляем все возможные исходы (напр, для стандартного покера): 1. Сразу пас 2. Игра без обмена 3. Пас после обмена 4. Игра после обмена Хотя тут еще встает вопрос, какую карту менять. Но это уже надо задавать жестко - до стрита или до флеша, к примеру. Для каждого исхода получаем итог. Потом крутим-вертим все эти сдачи по-всякому, ищем закономерности по максимальным МО (хорошо бы для удобства сдачи эти в БД какую-нибудь запихать), выводим стратегию игры. Скажите, я на правильном пути? Спасибо.
__________________
Скилл равен разнице между апстриком и даунстриком. |
0 |
05.11.2005, 13:56 | #14 (permalink) |
Бессмертный
Регистрация: 13.02.2004
Адрес: Россия
Сообщений: 3,027
|
Раздаем случайно 5 карт против карты дилера. Считаем МО каждого возможного решения перебором всех возможных вариантов. Выбираем лучшее МО, суммируем. При желании (для проверки на ошибки) иммитируем реальную игру. Сравниваем МО реальной игры с расчетным. Если совпадает, значит все ОК.
|
0 |
05.11.2005, 14:07 | #15 (permalink) | |
Участник
Регистрация: 28.10.2005
Адрес: Калуга
Сообщений: 158
|
Цитата:
Ситуация: У дилера Что надо делать? Надо пасовать (МО=-1) А при переборе всех возможных вариантов рано или поздно мы неизбежно купим пару, которая сыграет (МО= -1 + 3 = +2). Для данного расклада это будет лучшее МО, но это неправильное МО, так как в реальности мы НЕ будем прикупать, так ведь?
__________________
Скилл равен разнице между апстриком и даунстриком. |
|
0 |
05.11.2005, 14:43 | #16 (permalink) |
Бессмертный
Регистрация: 13.02.2004
Адрес: Россия
Сообщений: 3,027
|
Перебрав все варианты обменов мы получим множество пар и множество пустых комбинааций, каждая из которых будет иметь свое лучшее МО (пас и стэй). Просуммировав это все и вычтя стоимость обмена мы получим МО обмена, которое будет хуже чем -1. Т.е. оптимальным решением в данном раскладе будет ПАС.
|
0 |
06.11.2005, 14:23 | #18 (permalink) | |
Увлечённый
Регистрация: 13.02.2004
Сообщений: 443
|
Цитата:
Или у тебя всётаки "чистый" перебор? ЗЫ У меня перебором довольно тормознуто получялось. |
|
0 |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Есть программисты тут? | AllMAD | Железо | 5 | 02.07.2010 12:30 |
SAP программисты всех стран... | alexejv | Поговорим за жизнь | 6 | 27.01.2009 13:43 |
Программисты дайте совет | Брюс | Поговорим за жизнь | 11 | 07.01.2006 11:52 |
|
|