07.10.2018 15:00
 0 просмотров  4709  36

Анализ выхода карт в таверне: Cooldown

Автор: MOCHET



Важно: Все дальнейшие расчёты и анализы применимы только для игр с одной колодой.


Ситуация такая: Мы выкинули карту, через минимум сколько ходов она придёт к одному или другому игроку на руки? И есть ли некий максимум "не-выхода" карты - может ли карта не выходить 100, 200, 400, 1000, ... ходов ?

Как ход считается любое действие с картой: играть/сбросить; "играем снова" считается как отдельная карта.


Итак, я провёл несколько длительных экспериментов, чтобы получить ответ на этот вопрос. При экспериментах были доступны данные о моих картах и картах противника во время каждого хода (какая карта вышла и какая пришла). Любые запросы/ответы протоколлировались через программу fiddler (перехватчик HTTP запросов) и позже обрабатывались скриптом (statistical language R). Напомню: в колоде у нас 102 карты (ID: 0...101).


У нас есть 3 варианта:

1). 7 против 7 карт
2). 7 против 6 карт
3). 6 против 6 карт

Пример: У меня 7 карт, а у противника 6 карт. Скидываем карту:

I). Первый вопрос:


Через мин. сколько ходов придёт снова карта мне/врагу? (минимальный cooldown)

II). Второй вопрос:


Есть ли верхняя граница "не-получения" карты, то есть может ли карта не выходить подолгу, например 200 ходов?




I). Мин.количество ходов "не-выхода" карты:


1). (102 карты - (7+7))/2 = 88/2 = 44 -> cooldown у сброшенной карты минимум 44 хода.
3). (102 карты - (6+6))/2 = 90/2 = 45 -> cooldown у сброшенной карты минимум 45 ходов.
Теперь интересный случай: 6 против 7:
2). (102 карты - (6+7))/2 = 89/2 = 44.5 -> округление идёт вверх или вниз?
Сделал длительный эксперимент (скидывал карты несколько часов). При втором варианте идёт округление вверх, т.е. cooldown 45 ходов.




II). Есть ли верхняя граница по "не-выпаданию" карты?


Карты могут не выходить по 200, 400 и более ходов. Но вероятность того, что карта будет очень долго не выходить становится крайне мала.

Скрин из анализа эксперимента

X: "сколько ходов не выпадала карта": turns
Y: "сколько раз происходило данное событие": frequency

На графике видно, что в большинстве случаев карта обязательно выходит где-то после 45-150 ходов. Скорее всего, механизм такой: Скидываем карту, она попадает во вторую часть колоды (в рандомное место). После этого скидываем ещё одну карту, но она может отодвинуть карту до этого, т.е. может получиться, что мы будем постоянно отодвигать одну и ту же карту, не давая ей шанс выйти на руки. Если мы будем играть 10.000 ходов (После этой игры максимальное количество ходов стало 2500), то может получитсья, что одна будет не выходить 1.000 ходов, но исходя, из данных, наблюдаемых в эксперименте вероятность такого события крайне мала.

Формула


Вероятность того, что определённая карта не выйдет из общего котла X ходов: ((44/45)^Х) * 100% [1] (тут я исхожу, что cooldown 45 ходов, т.е. как минимум у одного игрока 7 карт), т.е. будут выходить 44 другие, но не она. X - это количество ходов.
Чем больше X, тем меньше вероятность, что карта останется ещё дольше. Но бывают и случаи, когда бывает что карта не выходит и по 100 или 200 и более ходов. Но случается такое редко.

Данные по формуле [1]:


Статистические данные очень схожы с данными рассчитаными по формуле.
В статистических данных у нас частота явлений, а в данных по формуле вероятность.
Чтобы переделать количество явлений (frequency) в вероятность (probability), нужно посчитать сумму всех явлений: N (должно быть меньше чем лимит ходов, т.е. 2500) и делить явления на это число N.

Пример


Событие: 44 хода не выходила карта (любая)
Частота: Это событие было 60 раз

Статистические данные: Всего, например, 2400 собранных явлений.
60/2400*100% - 2.50% вероятность того, что карта выйдет из кулдауна и сразу попадёт кому-то на руки

По формуле: (1-(44/45)^1)*100 = 2.22%

С каждым ходом, пока карта не выходит, вероятность для каждого хода немного падает (прирост становится немного меньше с каждым ходом - в начале как бы самый большой прирост, поэтому и вероятность выше), но в сумме всё равно растёт:
(1-(44/45)^1)*100 = 2.22%
(1-(44/45)^2)*100 = 4.40%
(1-(44/45)^3)*100 = 6.52%
(1-(44/45)^4)*100 = 8.60%
...
(1-(44/45)^100)*100 = 89.43%


99 ходов не выходила - 89.43% вероятность того, что карта выйдет на 100-ый ход, либо 10.57% что не выйдет. Причём здеь нужно учесть, что 100-ый ход после выхода из кулдауна, т.е. если она выйдет на 100-ый ход, а кулдаун был 45 ходов, то карту не будут видеть 99+45 = 144 ходов, а так как большинство игр по правилам столицы около 47 ходов, то эффект кулдауна сводится почти что к нулю, т.е. эффект рандома ещё намного больше усиливается в таких играх, где игры идут слишком быстро, т.е. это вносит тоже свой отдельный вклад в разницу 17% винрейта между первоходящим и вторым игроком.

Прирост
Ход 1: 2.22%
Ход 2: 4.40% - 2.22% = 2.17%
Ход 3: 6.52% - 4.40% = 2.12%
...

-> 2.22% > 2.17% > 2.12% > ...
(сравнение вероятностей для каждого хода)

Поэтому вероятность того, что карта попадаёт сразу после выхода из кулдауна самая высокая (- считаем через разницу: 2.22% (Ход 1) - она выше чем у второго хода: 2.17%), а вероятность того, что карта и дальше будет не выходить соответственно падает, но не будет 0%.
Поэтому если вы через 44-45 ходов вам не приходит какая-то карта, то она скорее всего уже у противника.




Итог


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

Итак: Статистически показанно, что игры по правилам столицы чисто для рулетчиков (17% разницы винрейта, невысокая башня для победы и нивелированние эффекта кулдауна) и играть в них крайне глупо.




PHP-Code


PHP code: cooldown

Если описать PHP кодом, то будет примерно вот так:

// здесь сидят карты
$cooldown_array = array(3, 7, 9, 42, 101, ...);
// отсюда вытягиваются карты
$pool_array = array(99, 0, 5, 6, 8, 102, ...);

// у первого игрока 6 карт
$cards_player_1 = 6;
// у второго игрока 7 карт
$cards_player_2 = 7;

// кулдаун 44/45 ходов
$cooldown = ceil((102 - ($cards_player_1 + $cards_player_2)) / 2);

/* Игрок играет картой и получает новую */

// карта с номером 42 будет сидеть 44/45 ходов в этом массиве
$cooldown_array[] = 42;

if(sizeof($cooldown_array) === $cooldown - 1){
    // получаем карту, которую засунули 44/45 ходов назад
    $card = array_shift($cooldown_array);
    // добавляем карту в массив. она готова для выхода в мир
    $pool_array[] = $card;
}

// получаем новую карту и даём игроку
$card_id = $pool_array[mt_rand(0, count($pool_array ) - 1)]];
// убираем карту из массива $pool_array
...
метки:
Механика игры
Комментарии
12 »
1 / 07.10.2018 16:08 / Фиркаг-некр [8] ?
однозначно по правилам столицы игра означает рулетку
напомню, что турниры по этим правилам проводятся
вы только гляньте на этого рака, сразу видно погрязшего в рандоме игрока
http://www.heroeswm.ru/pl_info.php?id=5925554

для ленивых "+" 82кк, "-" 54кк
2 / 07.10.2018 16:26 / Всеволод [21] ?
"Итак: Статистически показанно, что игры по правилам столицы чисто для рулетчиков (17% разницы винрейта, невысокая башня для победы и нивелированние эффекта кулдауна) и играть в них крайне глупо."

Ой как же много ты не знаешь о таверне, раз делаешь такие глупые выводы.
3 / 07.10.2018 17:03 / Маг-Лесник [14] ?
Цитата
будет не выходить 1.000 ходов, но исходя из данных наблюдаемых в эксперименте вероятность такого события крайне мала.

но, исходя из данных, наблюдаемых в эксперименте, вероятность....


Ответ редакции:

Морелло: Передано 10 000 Золото для Маг-Лесник: Коррекция)
4 / 07.10.2018 17:46 / U-Gin [15] ?
Маг-Лесник,
через постель не получится - она все время занята корректировщиком  
5 / 07.10.2018 18:02 / MOCHET [7] ?
Маг-Лесник, Ну я как понимаю тебя запятые чуть более припекли нежели суть самой статьи. Ну каждый о своём. Хоть бы там согласился или грязью полил по сути, а ты про кавычки, да запятые, тоже мне ещё один "grammer nazi".

Корректировщики, поддержу бага-лесника, почему не перепроверили? Лень?

Фиркаг-некр, ну я посчитал и показал, что практически рулетка и скилл по правилам столицы крайне мало решает. Естественно, что у каких-то там биороботов с 20.000 игр в таверне будет какой-то там плюс, - ну что хотелось бы тут их оффициально с этим жизненным достижением и поздравить - mazel tov! (не нравится, играй там где башня высокая нужна)
Ну кстати, молодец, что вспомнил про плюсовиков. Есть кстати и рулетчики с плюсом, вот статистика от omne:
http://daily.heroeswm.ru/bu.php?i=bcjssmn9

Всеволод, о, привет мулдашев, как дела?
Мулдашев таверны. #МыНеВеримЧтоВсёТакПросто. Приветствую вас в Тилимилитрямдии.
ну чё как тибетские инопланетяне ещё не посетили тебя в картах?
я тебе статистику и рассчёты, ты мне своё мнение. ну окей.

Блин, я так соскучился по срачу в комментах. Надо почаще статьи на дейли про карты делать что-ли.
6 / 07.10.2018 19:40 / Всеволод [21] ?
Я не собираюсь с тобой делиться своими расчетами)))
Прошлого перса заблокировали за неадекватность, заблокируют и этого)
7 / 07.10.2018 20:35 / MOCHET [7] ?
Всеволод,

Цитата: Всеволод
Я не собираюсь с тобой делиться своими расчетами)))
да, потому что их у тебя попусту нет, мулдашев.

Цитата: Всеволод
Прошлого перса заблокировали за неадекватность, заблокируют и этого)
я не думаю что меня это дико расстроит. я собираю статистику и пишу ИИ, а каким персом я это делаю это не играет роли.
а так ради инфы: того перса вообще-то заблокировали потому что был намеренно использован скрипт для спама в протоколе передач, была созданна тема на форуме с псж и после помещения в тюрьму ещё и был выложен пароль, чтобы не было никаких шансов на разблок. потому что тот персонаж изжил своё. было даже в блоге написанно о намеренном уходе - "псж".

видимо ты нигде ничего не знаешь, но везде бурная фантазия.
8 / 07.10.2018 22:16 / Маг-Лесник [14] ?
MOCHET, прости, я не особо вникал в суть статьи. Мне аркомаг н еинтересен. Я просто пробежался взглядом, думал, может будет что-то интересное, а там ошыбки, ошыбки, ну и понеслось...
9 / 07.10.2018 22:51 / Маг-Лесник [14] ?
Цитата
Ответ редакции:
Морелло: Передано 10 000 Золото для Маг-Лесник: Коррекция)

Я и делевле могу на постоянной основе, если надумаете обращайтесь, а то ваши шота не справляются)
10 / 07.10.2018 23:46 / Kligan-Dog [12] ?
я не совсем любитель карт, но когда набивал +1  к удаче сумел набить статистику 2 победы на 1 слив.

По поводу мин. ожидания рассчитано верно.
По поводу сброса карт и хода картой информации такой не слышал.

Вроде бы все говорят уходит карта во вторую половину колоды и там занимает случайное место.
11 / 08.10.2018 00:06 / MOCHET [7] ?
Kligan-Dog,

Цитата: Kligan-Dog
Вроде бы все говорят уходит карта во вторую половину колоды и там занимает случайное место.
ну да, про это и статья

Цитата: Kligan-Dog
По поводу сброса карт и хода картой информации такой не слышал.
про это я не понял.
карта может не выходить сколько угодно, но вероятность "не-выхода" уменьшается.

Цитата: Kligan-Dog
когда набивал +1  к удаче сумел набить статистику 2 победы на 1 слив.
это получается 66.66% винрейт (3 игры, из них 2 победные) - нехило так
если бесплатно играть, такие винрейты вроде реалистичны, а за деньги сложновато - где-то 55-60% обычно.
12 / 08.10.2018 11:21 / Фиркаг-некр [8] ?
Цитата: MOCHET
Фиркаг-некр, ну я посчитал и показал, что практически рулетка и скилл по правилам столицы крайне мало решает. Естественно, что у каких-то там биороботов с 20.000 игр в таверне будет какой-то там плюс, - ну что хотелось бы тут их оффициально с этим жизненным достижением и поздравить - mazel tov! (не нравится, играй там где башня высокая нужна)
Ну кстати, молодец, что вспомнил про плюсовиков. Есть кстати и рулетчики с плюсом, вот статистика от omne
тебя не напрягает что как раз на 20к играх и работает статистика? омг даже я играю в неплохой плюс

и я тебе больше скажу на дистанции сильный игрок будет выходить в хороший плюс, равно как и хорошие покеристы и т.д.
само собой многое зависит от поля
13 / 08.10.2018 12:33 / Krillan [15] ?
Короче, вы все неправы и автор статьи говорящий, что карты рулетка и его критики утверждающие что скил, отделяйте мух от котлет.

В соревновательном плане (% побед) карты в столице и правда рулетка, тк % побед самых лучших игроков не доходит и до 60, да и то набран в играх с дропом +вых соперников, а если смотреть % побед только в турнирных играх, то наверняка и 57% ни у кого нет.

Но в плане зарабатывания золота уже не рулетка и этих 55%+-2 побед хватает, чтоб быть в + на длинной дистанции, а если играть игры на макс ставки и дропать норм соперников, играя только со слабыми то можно существенно золота заработать за значительно меньше игр чем 20к
14 / 08.10.2018 12:56 / Krillan [15] ?
Ну и вообще причина рандомности акромага не в правилах столицы, а в том что есть так сяк карты, а есть ультимативные и если тебе не приходят 2е ты проиграл. И это влияет намного больше, чем рандом первого хода и тем более правила столицы. Не должно быть карт вроде +20 к башне за 21 и даже +15 за 16 и вообще синие карты должны быть ослаблены, но увеличены в количестве мелкие типа +5/6/7/8 к башне. А все карты + монастырь должны давать дополнительно штрафы, а не бонусы. Например карта +2 монастырь -5 к башне должна стать +1 монастырь -5 к башне, можно еще +1 монастырь +5 башне противника, +1 монастырь - 10 к стене, +1 монастврь -1 к шахте/казарме, а не такие как у нас дешевые и обязательные к ходу.
15 / 08.10.2018 15:10 / Клешнерукий [7] ?
Цитата: Всеволод
Я не собираюсь с тобой делиться своими расчетами)))
Я доказал, что вы балабол. Но своими доказательствами делиться я не буду!
16 / 08.10.2018 18:26 / Маг-Лесник [14] ?
Цитата
рассчёты
расчёты
17 / 08.10.2018 20:36 / MOCHET [7] ?
Krillan, толково говоришь, согласен, что карты баллансить надо.

Цитата: Krillan
Но в плане зарабатывания золота уже не рулетка и этих 55%+-2 побед хватает, чтоб быть в + на длинной дистанции, а если играть игры на макс ставки и дропать норм соперников, играя только со слабыми то можно существенно золота заработать за значительно меньше игр чем 20к
с этим тоже согласен.
ещё огда играешь на деньги всё лучше играть золотой картой - вместо 6-и 7 карт = дополнительное место, т.е. чуть больше возможностей иметь карты разной стоимости на руках, т.е. ходов, где вынужден просто выкидывать карты, т.к. нет ресурсов или чисто хлам по идее должно быть меньше.
ну это и так всем ясно

ну винрейт 55%-57% у опытных игроков как-то не очень - проблема в жёстком рандоме - если бы не такой рандом, может винрейт выше был бы.
я про это и в принципе и пишу, что если играть не по правилам столицы, то больше возможностей проявить свой скилл, там игры дольше идут и карты уже запоминать нужно, а в столице башня шибко низкая, это и ведёт к тому что игры быстро идут - в среднем 47 ходов.

надо больше карт "играем снова". вот такие как сдвиг, призма и кража технологой тоже довольно имбоватые.
Вообще если бы я делал аркомаг, не меняя особо карт - я бы дал каждому игроку колоду - у каждого перса был бы свой кулдаун, их карты бы не перемешивались бы, и дать возможность выбирать 2-3 карты в начале.
так будет уже не такой сильный эффект рандома, как сейчас.
18 / 08.10.2018 21:10 / Fennec [9] ?
Цитата: MOCHET
Вообще если бы я делал аркомаг, не меняя особо карт - я бы дал каждому игроку колоду - у каждого перса был бы свой кулдаун, их карты бы не перемешивались бы, и дать возможность выбирать 2-3 карты в начале.
так будет уже не такой сильный эффект рандома, как сейчас.

Согласен. Причем, как вариант, можно обязать одновременно разыграть по 1 карте в начале боя, после чего дать обоим игрокам сбросить в конец колоды N карт. Так можно избежать начальную раздачу семи красных карт с одной стороны и камнеедов с другой
19 / 08.10.2018 21:59 / MOCHET [7] ?
Фиркаг-некр, играя в других секторах винрейт будет повыше

Хотя с другой стороны в столице игры быстрее идут. Можно посчитать в каком районе выгоднее играть - соотношение винрейта к затраченному времени на игру. Винрейт нужно брать свой.
20 / 08.10.2018 22:04 / MOCHET [7] ?
Так можно посчитать КПД для каждого игрока
12 »

Возможность комментировать доступна после регистрации