Je voudrais utiliser Elo pour suivre le classement des joueurs entre les matchs d'un certain jeu, mais le jeu peut être joué avec jusqu'à quatre joueurs dans un match. J'ai vu des jeux comme Carcassonne utiliser Elo avec plus de deux joueurs, mais je ne connais pas Elo au-delà d'un match 1-1.
De l' article de wikipedia, les équations à deux joueurs que je voudrais étendre sont:
E a = 1 / (1 + 10 (R b - R a ) / 400 )
E b = 1 / (1 + 10 (R a - R b ) / 400 )
R x nouveau = R x ancien + 32 * (W - E x ), où W = 1 si X gagne et W = 0 si X perd.
Comment le calcul pour E x et W changerait-il pour plus de deux joueurs?
algorithm
multiplayer
ranking
fbrereto
la source
la source
Réponses:
Comme suggéré par le lien supérieur dans ma recherche Google, vous pouvez calculer les modifications individuelles de la note Elo d'un joueur (vos valeurs R), puis les additionner pour fournir la variation totale à appliquer à la note de chaque joueur.
c'est-à-dire si vous avez 4 joueurs (A, B, C, D), calculez la modification de la note de A (R-sub-a-sub-new) à partir de leurs scores contre B, C et D, puis ajustez la note de A en le total des valeurs R calculées.
la source
J'ai trouvé un article avec le code source PHP d'une méthode similaire à la réponse de fnord ici: http://elo-norsak.rhcloud.com/3.php J'ai créé une implémentation php plus générale ici: https://github.com/ FigBug / Multiplayer-ELO Je l'utilise avec mon groupe de jeux de société, et jusqu'à présent il semble bien fonctionner.
Le calcul de Ex et W resterait le même. Au lieu d'utiliser un K de 32, utilisez un K de 32 / (#players - 1). Ensuite, regardez chaque permutation de 2 joueurs et calculez (32 / (#players - 1) * (W - Ex)). Alors RxNew est égal à RxOld + Sum de toutes les valeurs que vous venez de calculer.
la source
eloChange += round($K * ($S - $EA));
mais arrondir uniquement après tous les calculs lors du réglageeloPost
J'ai récemment écrit ce post sur le sujet. J'espère que ça aide. Je vais bientôt ajouter également le code dans un autre article.
la source