8 Stimmen

Wie kann ich basierend auf einer variablen Anzahl von Spielen eine faire Gesamtpunktzahl berechnen?

Ich habe ein Spiel, in dem Sie bei jedem Match von -40 bis +40 Punkte erreichen können. Benutzer dürfen beliebig viele Matches spielen. Ich möchte einen Gesamtscore berechnen, der implizit die Anzahl der gespielten Matches berücksichtigt.

Nur den Durchschnitt zu berechnen ist nicht fair. Zum Beispiel, wenn Peter vier Spiele spielt und bei jedem Spiel 40 Punkte erhält, wird er den gleichen Gesamtscore haben wie Janne, der nur ein Spiel mit 40 Punkten gespielt hat.

Das Aufsummieren der Match-Punkte ist auch nicht fair. Peter spielt 2 Spiele (40 Punkte pro Spiel), Gesamtscore 80. Janne spielt 8 Spiele (10 Punkte pro Spiel), Gesamtscore 80.

Gibt es eine (einfache) und faire Möglichkeit, den Gesamtscore zu berechnen? Ich habe von dem Elo & Glicko System für Schachwertungen gelesen, aber beide basieren auf der Spieler-Bewertungsgeschichte und der Bewertung der Gegner.

1voto

Ying Xiao Punkte 1729

Erstellen Sie einen Graphen, wobei jede Person durch einen Knoten repräsentiert wird. Jede Kante im Graphen repräsentiert eine Serie von Spielen zwischen zwei Spielern. Wenden Sie nun einen Art von Page-Rank-Algorithmus an, um Ihnen eine Reihe von Gewichten über den Knoten zu geben. Das sollte Ihnen Ihre Platzierung geben.

Jetzt kommt der knifflige Teil: die Auswahl der Kanten gewichte, die im PageRank verwendet werden. Für die gerichtete Kante (u,v) - von Knoten u nach Knoten v - würde ich persönlich ein Gewicht zuweisen, das gleich der Anzahl der Punkte ist, die Spieler u gegen Spieler v gewonnen hat.

Sie können jederzeit Knoten zu Ihrem Graphen hinzufügen, aber denken Sie daran, dass der PageRank ältere Knoten bevorzugt (d.h. diejenigen, die mehr Spiele gespielt haben!). Wie auch immer, hier eine Referenz:

http://dbpubs.stanford.edu:8090/pub/1999-66

Ein alternativer Ansatz besteht darin, ELO-Wertungen zu verwenden und zu versuchen, sie zu booten, indem man allen zunächst die gleiche Punktzahl zuweist und dann eine Punktzahl nach vorne propagiert. Ich kann jedoch nicht behaupten, dass dies vollständig zufriedenstellend ist.

0voto

Ian G Punkte 10199

Es hängt davon ab, wie stark du Spiele, gespielt im Vergleich zu den Punkten, gewichten möchtest. Du könntest eine Funktion definieren, die ein Gewicht für gespielte Spiele zurückgibt: einen kleinen Bruchteil für nur ein Spiel und 1 für viele Spiele (z.B. 1 - 1/(2 * #Spiele)) und das mit der kumulativen Punktzahl multiplizieren.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X