Общая информация про LoL ARAM [нажмите чтобы развернуть]
ARAM (или All Random All Mid) — это игровой режим
в League of Legends в формате 5-на-5 на карте Воющая Бездна (Howling Abyss).
Две команды по пять игроков в каждой играют друг против друга.
В этой игре каждый игрок управляет одним чемпионом, который выбирается в лобби игры до того как игра начнется.
В этом режиме игроки получают случайных чемпионов из списка доступных чемпионов, могут обмениваться чемпионами и рероллить чемпионов.
Когда лобби ARAM'а начинается каждый игрок роллит одного чемпиона. Этот чемпион выбирается случайно из доступных игроку чемпионов.
Роллы игроков выполняются последовательно.
Команды не видят пики оппонентов.
Каждый чемпион в игре может быть зароллен или зарероллен в лобби не более одного раза (на обе команды).
Каждый игрок может накопить максимум два реролла.
Игрок может применить реролл и заменить своего чемпиона (зарероллить).
При этом он получает нового чемпиона, а предыдущий чемпион помещается в список открытых для команды.
У каждой команды свой список открытых чемпионов.
Любой игрок может поменять своего чемпиона на любого из списка открытых для его команды,
если этот чемпион куплен у этого игрока или этот чемпион входит в список доступных всем.
Каждый реролл стоит 250 очков реролла (максимум 500 очков реролла).
Очки реролла начисляются каждому игроку после каждой игры.
Точное количество зависит от количества купленных чемпионов (формула: 65 + 1.5 x доступных чемпионов).
Неиспользованные очки реролла сохраняются и переносятся в следующее лобби ARAM'а.
Цель
У многих игроков есть сомнения в распределении чемпионов в ARAM'е.
Кажется что чемпионы повторяются слишком часто, вам не выпадают ваши любимые чемпионы.
Однако весь процесс немного сложнее, чем может интуитивно показаться.
Существует несколько когнитивных искажений, которые могут сильно повлиять на ожидания:
Конкретный чемпион. Когда вам выпадает Катарина 3 раза подряд, то вы можете подумать,
что это весьма маловероятное событие.
Однако ваши ощущения не сильно изменятся, если вы получите Шако, Варуса или Кай'Су 3 раза подряд.
Получение конкретного чемпиона (например конкретно Катарину) отличается от получения одного и того же чемпиона. Последнее намного более вероятно.
Парадокс дней рождения. Скажем в игре есть всего 161 чемпион. Также есть 10 чемпионов, на которых вам нравится играть.
Лобби игры начинается и ваша команда роллит 10 чемпионов, из которых можно выбрать чемпиона на игру.
Насколько вероятно что среди этих чемпионов будет хотябы один, на котором вам нравится играть? Это примерно 48%.
Это схоже с парадоксом дней рождения.
Множество игр.
Люди склонны уделять больше внимания конкретным событиям нежели всему процессу целиком.
Вероятность сыграть всего 3 игры и в каждой получить Катарину намного меньше,
чем сыграть 30 игр и один раз получить Катарину 3 раза подряд за эту серию игр.
Эта статья посвящена построению математической модели для оценки вероятности определенных событий, основываясь при этом на равной вероятности для всех чемпионов.
Подход и детали модели [нажмите чтобы развернуть]
Некоторые предположения этой модели в порядке важности:
Прежде всего, эта модель предполагает, что все доступные чемпионы имеют
равную вероятность выпасть при каждом ролле или реролле.
Все игроки имеют один и тот же фиксированный набор (или подмножество) доступных чемпионов.
Это позволяет сделать всех чемпионов взаимозаменяемыми и опустить всевозможные аспекты популярности чемпионов,
доступности чемпионов, порядка роллов и рероллов.
Количество доступных чемпионов — это один из параметров модели.
В реальной игре игроки предпочитают брать своих любимых или сильных чемпионов. Это тяжело формализовать.
В этом модели игроки будут пытаться максимизировать условие:
все игроки будут пытаться брать чемпиона с наибольшим количеством игр или с наибольшим количеством игр подряд (в текущий момент).
Вероятно, это не то как игроки поступают в целом, однако это определенно валидная формальная стратегия.
Также наиболее популярные чемпионы в общем являются наиболее сильными и наиболее предпочитаемыми.
Поэтому можно сказать, что игроки предпочитают брать одних и тех же сильных
и одних и тех же любимых чемпионов.
В первой игре в симуляции у игроков не будет предпочтений.
Игроки не будут сохранять рероллы для будущих игр. Все доступные рероллы будут тратиться каждую игру.
Всех игроки получают одинаковое количество очков реролла за игру
(потому что они все имеют одинаковое количество доступных чемпионов).
Количество рероллов за игру — это один из параметров модели.
Количество рероллов за игру может иметь дробное значение. В таком случае игроки будут будут использовать целое количество рероллов,
а оставшиеся очки реролла будут перенесены на следующую игру.
Если в вычислениях задействовано более одного игрока (команда из 5 игроков),
то количество рероллов будет высчитываться как сумма рероллов всех включенных игроков.
Можно думать об этом как о размере списка открытых чемпионов для команды.
Эта сумма рероллов округляется вниз до ближайшего целого числа, а оставшаяся часть переносится на следующие игры.
Например, с 1.5 рероллов за игру общее количество рероллов на команду из 5 человек
будет чередоваться между 7 и 8 рероллами каждые 2 игры.
Игроки не будут доджить игры (отменять старт игры с помощью выхода из лобби).
Теоретически додж игр может быть использован как безграничный источник улучшения чемпионов вашей команды.
Реальные игроки могут иногда использовать его для того, что отменить какие-нибудь неудачные сетапы.
Игроки не будут мешать друг другу и будут всегда свободно обмениваться чемпионами.
Эта модель вычисляет вероятность "повысить" чемпионов за серию игр,
где каждая игра выдает набор случайных чемпионов для выбора (draft pool) и подмножество этих чемпионов выбирается в список для повышения (upgrade pool).
Повышение чемпиона может иметь разные значения, самый простой пример — это сыграть игру с этим чемпионом.
Количество чемпионов для выбора и чемпионов для повышения может варьироваться.
Повышения могут сохраняться на протяжении всего вычисления (сыграть X раз всего)
или могут сбрасываться после каждой игры без повышения (сыграть X раз подряд).
Список параметров модели:
total_games — общая длина последовательности игр, которую нужно вычислить;
total_champions — общее количество чемпионов, которые могут быть получены;
target_streak — маскимальное количество повышений, которое нужно применить к одному чемпиону для того чтобы посчитать условие выполненным;
draft_pool — размер draft pool — количество случайно выбираемых чемпионов, которые могут быть повышены;
upgrade_pool — размер upgrade pool — размер подмножества выпавших в draft чемпионов, которые непосредственно получат повышение;
reset_on_failure — если установлено в true, то количество повышений на чемпионе будет сброшено в ноль после игры без повышения,
иначе количество повышений сохраняется на протяжении всех игр.
Нам нужно посчитать вероятности для серии событий, где текущие решения основываются на предыдущих.
Динамическое программирование — это самый прямолинейный способ сделать это.
Модель будет обрабатывать игры в последовательности друг за другом, поддерживая при этом
все возможные ситуации (состояния), которые могут быть достигнуты после текущей игры.
Состояния собраны вместе в слои по количеству сыгранных игр.
Количество игр можно считать неявным аргументом состояния.
Модель хранит только два слоя: слой текущей игры и слой следующей игры.
Конечно хранить информацию о каждом чемпионе слишком расточительно.
Вместо этого чемпионы собраны в группы по количеству полученных повышений и размеры каждой группы сохранены в виде вектора.
Этот вектор является аргументом в динамическом программировании.
Значение для каждого состояния динамического программирования — это вероятность попасть в это состояние.
Переходы динамического программирования — это добавление еще одной игры из текущего состояния.
Это выполняется рекурсивно.
На каждом шаге рекурсии одна рассматривается одна группа чемпионов, начиная с наибольшего количества повышений.
Рассматриваются все возможные способы получить чемпионов этой группы в лобби (все возможные их количества).
Для всех последующих шагов эта группа чемпионов исключается из рассмотрения (чемпионы и попавшие в лобби, и не попавшие).
Когда все группы чемпионов будут рассмотрены состояние, в которое будет сделан переход, будет достроено.
Переход завершен и вероятность добавляется в состояние на следующем слое.
Количество состояний и переходов все еще экспоненциально,
но рост ограничивается несколькими параметрами и оптимизациями.
Когда состояние получает требуемое количество повышений хотябы на одном чемпионе,
то эта вероятность добавляется к результату и такое состояние дальше не расширяется.
Когда состояние или ветка перехода имеют вероятность близкую к нулю, то они сразу останавливаются и дальше не расширяются.
Переходы вычисляются независимо для каждого состояния.
Гипергеометрическое распределение
используется для вычисления разделения вероятности на каждом шаге переходов.
На этой стадии все чемпионы деляться на чемпионов текущей группы и всех остальных чемпионов.
Для заданного количества чемпионов и размера текущей группы нужно посчитать вероятность,
что в равновероятно выбранном подмножестве из draft_pool чемпионов будет ровно X чемпионов из текущей группы.
Гипергеометрическое распределение используется на каждом шаге рекурсии и коэффициенты перемножаются для каждой группы в состоянии.
Эта модель соответствует механике выбора персонажей в ARAM из патча LoL 12.17.1.
Этот документ последний раз обновлялся 19 сентября 2022.
Вычисления завершены для AAA чемпионов, BBB рероллов за игру (CCC мс, DDD состояний в пике, EEE переходов)Вычисления завершены для AAA чемпионов (BBB мс)Вычисления в процессе...AAA подрядв AAA играхAAA игр сыграноAAA чемпионовAAA в лобби (BBB рероллов)AAA
Параметры
Используйте форму ниже для изменения глобальных параметров всех вычислений.
Количество чемпионов не обязательно должно быть равно количество чемпионов в игре.
Оно может быть уменьшено вплоть до 65 для получения более актуальной информации о низкоуровневых или специальных аккаунтах.
Количество рероллов привязано к количеству чемпионов формулой: 65 + 1.5 x доступных чемпионов.
Но оно также может быть изменено независимо для получения более актуальной информации о коротких сериях игр со специальными условиями.
Наиболее обоснованные сценарии для вычислений:
161 чемпионов / 1.224 рероллов за игру — все чемпионы
124 чемпионов / 1 рероллов за игру — ровно один реролл за игру
100 чемпионов / 0.86 рероллов за игру — средние аккаунты
75 чемпионов / 0.71 рероллов за игру — новые аккаунты
Количество чемпионов должно быть целым числом в диапазоне [65; 300]. Количество рероллов должно быть вещественным числом в диапазоне [0; 2].
Ввод любых других значений может привести к ошибкам или к очень долгим и требовательным к памяти вычислениям.
Если что-то пойдет не так, просто перезагрузите страницу.
Инициализация скриптов...
Количество чемпионов:
Количество рероллов за игру:
Результаты
Наведите курсор на ячейки таблицы для получения точных подсказок.
AAA шанс получить хотя бы одного из BBB любимых чемпионов среди CCC чемпионов в лобби
[B-1]
Вероятность получить хотя бы одного из
Y любимых чемпионов
среди X чемпионов в лобби
Это вычисляется более простой формулой С(N - A, B) / C(N, B) без использования основной модели.
Инициализация скриптов...
AAA шанс сыграть против одного и того же чемпиона BBB игр подряд за серию из CCC игр (как минимум один раз)
[C-1]
Вероятность сыграть против одного и того же
чемпиона Y игр подряд
за серию из X игр (как минимум один раз):
Инициализация скриптов...
AAA шанс сыграть против одного и того же чемпиона как минимум в BBB играх за серию из CCC игр
[C-2]
Вероятность сыграть против одного и того же
чемпиона как минимум в Y играх
за серию из X игр:
Инициализация скриптов...
AAA шанс сыграть за одного и того же чемпиона BBB игр подряд за серию из CCC игр (как минимум один раз)
[C-3]
Вероятность сыграть за одного и того же
чемпиона Y игр подряд
за серию из X игр (как минимум один раз):
Инициализация скриптов...
AAA шанс сыграть за одного и того же чемпиона как минимум в BBB играх за серию из CCC игр
[C-4]
Вероятность сыграть за одного и того же
чемпиона как минимум в Y играх
за серию из X игр:
Инициализация скриптов...
AAA шанс самому зароллить/зарероллить одного и того же чемпиона BBB игр подряд за серию из CCC игр (как минимум один раз)
[C-5]
Вероятность самому зароллить/зарероллить одного и того же
чемпиона Y игр подряд
за серию из X игр (как минимум один раз):
Это вычисляется для одного игрока.
Инициализация скриптов...
AAA шанс самому зароллить/зарероллить одного и того же чемпиона как минимум в BBB играх за серию из CCC игр
[C-6]
Вероятность самому зароллить/зарероллить одного и того же
чемпиона как минимум в Y играх
за серию из X игр:
Это вычисляется для одного игрока.
Инициализация скриптов...
AAA шанс самому зароллить/зарероллить и сыграть за одного и того же чемпиона BBB игр подряд за серию из CCC игр (как минимум один раз)
[C-7]
Вероятность самому зароллить/зарероллить и сыграть за одного и того же
чемпиона Y игр подряд
за серию из X игр (как минимум один раз):
Это вычисляется для одного игрока.
Инициализация скриптов...
AAA шанс самому зароллить/зарероллить и сыграть за одного и того же чемпиона как минимум в BBB играх за серию из CCC игр
[C-8]
Вероятность самому зароллить/зарероллить и сыграть за одного и того же
чемпиона как минимум в Y играх
за серию из X игр:
Это вычисляется для одного игрока.
Инициализация скриптов...
AAA шанс просто получить и сыграть за одного и того же чемпиона BBB игр подряд за серию из CCC игр (как минимум один раз)
[C-9]
Вероятность просто получить и сыграть за одного и того же
чемпиона Y игр подряд
за серию из X игр (как минимум один раз):
Это вычисляется для одного игрока. Рероллы и обмены персонажами тут не учитываются.
Инициализация скриптов...
AAA шанс просто получить и сыграть за одного и того же чемпиона как минимум в BBB играх за серию из CCC игр
[C-10]
Вероятность просто получить и сыграть за одного и того же
чемпиона как минимум в Y играх
за серию из X игр:
Это вычисляется для одного игрока. Рероллы и обмены персонажами тут не учитываются.