Update
This commit is contained in:
parent
ae83a3d0c0
commit
1ab3672b68
7 changed files with 179 additions and 69 deletions
4
elo.md
4
elo.md
|
@ -26,6 +26,10 @@ After playing a game the ratings of the two players are adjusted depending on th
|
|||
|
||||
where *R* is the outcome of the game (for player 1, i.e. 1 for a win, 0 for loss, 0.5 for a draw) and *K* is the change rate which affects how quickly the ratings will change (can be set to e.g. 30 but may be different e.g. for new or low rated players). So with e.g. *K = 25* if for our two players the game ends up being a draw, player 2 takes 9 points from player 1 (*A2 = 1691*, *B2 = 1409*, note that drawing a weaker player is below the expected result).
|
||||
|
||||
**How to compute Elo difference from a number of games?** This is useful e.g. if we have a chess engine X with Elo EX and a new engine Y whose Elo we don't know: we may let these two engines play 1000 games, note the average result *E* and then compute the Elo difference of the new engine against the first engine from this formula (derived from the above formula by solving for Elo difference *B - A*):
|
||||
|
||||
*B - A = log10(1 / E - 1) * 400*
|
||||
|
||||
## Some Code
|
||||
|
||||
Here is a [C](c.md) code that simulates players of different skills playing games and being rated with Elo. Keep in mind the example is simple, it uses the potentially imperfect `rand` function etc., but it shows the principle quite well. At the beginning each player is assigned an Elo of 1000 and a random skill which is [normally distrubuted](normal_distribution.md), a game between two players consists of each player drawing a random number in range from from 1 to his skill number, the player that draws a bigger number wins (i.e. a player with higher skill is more likely to win).
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue