I am designing an algorithm for computing the score of a player who plays 1v1 matches against other players.
The current algorithm is this:
- Each player starts with a score of 0
- When two players play against each other for the first time, each player gets 2 points from nowhere, and 1 is put at stake from nowhere.
- Before a match starts, if one of the players has a higher score, that player puts 1 point at stake. Then each player puts 10% of the score of the player with the least points, rounded up, at stake. (This is done so that if two players alternate in winning, their scores will settle separately.)
- The winner of a match takes all of the points at stake.
Effects of this scoring system:
- The lowest score a player could have is 0 points.
- Even if a player has a score of 0, if a player plays against a new player and win, they will always have a score higher than the new player who has just lost. This effect eliminates the awkward situation in some scoring system where a player who wins against a new player still has a lower score than the new player.
- The maximum score a player have depends on the number of pairs of player who have played. A league where each player plays against one another has more points in circulation than a league where only some players had played each other. For example, a 3-player league where A and C only play against B would only have 10 points to circulate, as opposed to 15 points when all three players have played against one another.
- When two leagues that normally play exclusively (member of each league only plays against other members of their own league) each sends a representative to play against each other, the amount of points that a league could lose only depends on the score of their representative. This eliminates the unfair situation in some scoring system where the amount the loser loses depends on the difference in their scores. This can result in an unfair advantage when a league intentionally sends a strong player with a low score to take more points from the other league. In the proposed system, a league cannot gain more points than what they risk.
Example: A has 200 points, B has 100 points. If A loses, A's score becomes 189 and B's score becomes 111. A's score decreases by 11. If they play again and A loses again, A's score becomes 176. This time A loses 1 points because B could put more points at stake. If they play again for the third time, the stake for A would be 14.
- If two players with different scores play each other repeatedly, each winning every other game, their scores will settle instead of equalize. (This eliminates the issue in some scoring system where the history of the score could be forgotten.)
Example: If both players started at 100 points and A wins 5 games straight, the scores would be 143 for A and 57 for B. After that, if B and A only win alternately, the scores will not equalize. A's score will fluctuate between 136 and 128, and B's score will fluctuate between 64 and 72. For B to bring A's score down to 100, B has to win 4 additional times to cancel A's lead in the beginning.
Comments?