Я хотел бы использовать Elo для отслеживания рейтинга игроков между матчами определенной игры, однако в игре могут участвовать до четырех игроков в матче. Я видел игры типа Carcassonne, в которых Elo используют более двух игроков, но я не знаком с Elo за матчем 1: 1.
Из статьи википедии я хотел бы расширить уравнения для двух игроков:
E a = 1 / (1 + 10 (R b - R a ) / 400 )
E b = 1 / (1 + 10 (R a - R b ) / 400 )
R x new = R x old + 32 * (W - E x ), где W = 1, если X выигрывает, и W = 0, если X проигрывает.
Как изменится вычисление для E x и W, учитывая более двух игроков?
algorithm
multiplayer
ranking
fbrereto
источник
источник
Ответы:
Как подсказывает верхняя ссылка в моем поиске Google, вы можете рассчитать индивидуальные изменения в рейтинге Эло игрока (ваши значения R), а затем суммировать их, чтобы получить общее изменение, применимое к рейтингу каждого игрока.
т.е. если у вас 4 игрока (A, B, C, D), рассчитайте изменение рейтинга A (R-sub-a-sub-new) по их оценкам против B, C и D, а затем скорректируйте рейтинг A по сумма рассчитанных R-значений.
источник
Я нашел документ с PHP исходного кода метода аналогично ответу Fnord здесь: http://elo-norsak.rhcloud.com/3.php я создал более общую реализацию цели PHP здесь: https://github.com/ FigBug / Multiplayer-ELO Я использую его со своей группой по настольным играм, и пока, похоже, она работает хорошо.
Расчет Ex и W останется прежним. Вместо того, чтобы использовать K из 32, используйте K из 32 / (#players - 1). Затем посмотрите на каждую перестановку 2 игроков и рассчитайте (32 / (#players - 1) * (W - Ex)). Тогда RxNew равно RxOld + Sum всех значений, которые вы только что рассчитали.
источник
eloChange += round($K * ($S - $EA));
а делать округление только после всех вычислений при установкеeloPost
Я недавно написал этот пост на тему. Я надеюсь, что это помогает. Я скоро также добавлю код в другой пост.
источник