Chciałbym używać Elo do śledzenia rankingów graczy między meczami określonej gry, jednak w grę może grać maksymalnie czterech graczy. Widziałem gry takie jak Carcassonne, w których korzysta Elo z więcej niż dwoma graczami, ale nie znam Elo po pojedynku 1-1.
Z artykułu w Wikipedii , równania dla dwóch graczy, które chciałbym rozszerzyć, to:
E a = 1 / (1 + 10 (R b - R a ) / 400 )
E b = 1 / (1 + 10 (R a - R b ) / 400 )
R x nowy = R x stary + 32 * (W - E x ), gdzie W = 1, jeśli X wygra, a W = 0, jeśli X przegra.
Jak zmieniłyby się obliczenia dla E x i W dla więcej niż dwóch graczy?
algorithm
multiplayer
ranking
fbrereto
źródło
źródło
Odpowiedzi:
Jak sugeruje górny link w mojej wyszukiwarce Google, możesz obliczyć indywidualne zmiany w rankingu Elo graczy (twoje wartości R), a następnie zsumować je, aby podać całkowitą zmianę stosowaną do oceny każdego gracza.
tzn. jeśli masz 4 graczy (A, B, C, D), oblicz zmianę oceny A (R-sub-a-sub-new) na podstawie ich wyników w stosunku do B, C i D, a następnie dostosuj ocenę A o suma obliczonych wartości R.
źródło
Znalazłem artykuł z kodem źródłowym PHP metody podobnej do odpowiedzi fnord tutaj: http://elo-norsak.rhcloud.com/3.php Stworzyłem tutaj implementację php bardziej ogólnego przeznaczenia: https://github.com/ FigBug / Multiplayer-ELO Używam go z moją grupą gier planszowych i do tej pory wydaje się, że działa dobrze.
Obliczenia Ex i W pozostałyby takie same. Zamiast używać K 32, użyj K 32 / (#players - 1). Następnie spójrz na każdą permutację 2 graczy i oblicz (32 / (#players - 1) * (W - Ex)). Wtedy RxNew jest równy RxOld + Suma wszystkich właśnie obliczonych wartości.
źródło
eloChange += round($K * ($S - $EA));
ale zaokrąglać dopiero po wszystkich obliczeniach podczas ustawianiaeloPost
Niedawno napisałem ten post na ten temat. Mam nadzieję, że to pomoże. Wkrótce dodam również kod w innym poście.
źródło