Computer Chess Club Archives




Subject: Simulating the result of a single game by random numbers

Author: Christoph Fieberg

Date: 12:08:42 07/03/01

Description of the program I developed for simulating the result of a chess game
of two rated players.

The result of the game depends on the performance factor and a draw factor.

1.) Performance factor

The performance factor depends on the rating difference and on the advantage
playing the white pieces.

In order to determine the performance factor I analyzed nearly 100.000 games of
games with both players 2500+. The distribution for 1-0, Draw, 0-1 was (rounded)
31%-50%-19%. White had a success-rate of 56% (= 31 + 50/2) and Black of 44%. [I
would be happy if this distribution could be validated by others. It has to be
noted that this is an average distribution for players 2500+. On the top level
the success-rate is lower due to a higher number of draws.]

The average opponent for White and Black had the same rating and therefore the
advantage playing white (if both players have the same strength) is 12%-points
(56-44) what can be expressed as 42 Elo-points (see formula below). Thus, for
calculation purposes White has to be added 21 Elo and Black substracted 21 Elo
in order to consider the advantage playing white.

The following formula (I think used by FIDE) allows to calculate the performance
based on Elo-difference and vice versa. It is:

Performance (%) = (1 / (1 + (10 ^ (-difference / 400))))

Example for calculating the likely performce of a 2600 player playing white
against a 2550 player:

Rating 2600 – 2500; Advantage White => 2621 – 2479; Difference = 142; => 69.37%.
This means in 100 such games the 2600-player (who always has white) most
probably will win 69.5 - 30.5. [Note that in case that it is a match of 100
games with changing colours there would be no white advantage and thus the
difference is only 100 => 64.01%. For specialists: Here the white advantage is
10.72%-points instead of 12%-points. This implies that according to the formula
it is as hard to get from 64.01% success rate to 69.37% as it is from 50% to

2.) Draw factor

The draw rate has to be seen in relation on the maximum number of draws
depending on the success rate and not in relation on the number of games played
(this is a important point which seems to be totally neglected in draw rate

Example: If there is a success rate of 90%, a player will get 90 points out of
100. It is clear that the maximum number of draws can only be 20 (80 wins, 20
draws, 0 losses => 90 points). If there are really 20 draws the draw rate (here
depending on the success rate of 90%) therefore is 100% and not 20%. If a 90%
success rate results in 85 wins, 10 draws and 5 losses the draw rate would be

The average draw rate based on the nearly 100.000 games of 2500+ players can be
calculated according to the following formula:

Draw rate = Percentage of draws / ((100% - success-rate) * 2)

As described above there were a success-rate of 56% and a 50% were draws.
=> draw rate = 50% / ((100% - 56%) * 2) = 56.82%

This average draw rate of 56.82% now allows to calculate the distribution for
the result of a single game.

Example: I will calculate the result of the game 2600 – 2500. The success-rate
taken into account the white advantage is 69.37% (see above). The average draw
rate is 56.82%.

Therefore percentage of draws is (1 – (ABS(0.6937-0.5) * 2)) * 0.5682 = 0.3481 =
34.81% and the percentage of wins is (0.6937 – (0.3481 / 2)) = 0.5197 = 51.97%

This means that we can expect in 1000 games from the 2600 player about

520 wins / 348 draws / 132 losses (distribution 52% - 34.8% - 13.2%)

[Check: (520 + 348 / 2) / 1000 = 69.4% success-rate; maximum number of draws =
612 (distribution 388 – 612 – 0) => draw rate = 348 / 612 = 0.5686 = 56.86%]

3.) Calculation the result with random numbers

If the distribution for the result of a single games is known it is relatively
easy to simulate the outcome. In the example the distribution for a game 2600 –
2500 is

52% for a win, 34.8% for a draw and 13.2% for a loss.

(The calculation depended on the average success-rate of 56%, the average
advantage for the white player of 42 Elo-points and the average draw rate of
56.82% as shown above).

The simulation-program creates a random number between 0 and 1 (e.g. 0.446).
In case the number is >= 0.48 (likelihood 52% as for a win) the 2600 player
In case the number is > 0.132 and < 0.48 (likelihood 34.8% as for a draw) the
game is a draw.
In case the number is <= 0.132 (likelihood 13.2% as for a loss) the 2600 player
As example the random number is 0.446 what means that the result of the game is
a draw.

4.) Simulation of tournaments and matches

With the simulation of the result of a single game it is possible to calculte
whole tournaments and matches (the only difficulty is to program it).

In respect of matches it has to be regarded that the main factors (average
success-rate, average white advantage, average draw rate) are average factors
and probably have to be adjusted to the level of the opponents. Also for
tournaments there schould be adjustments depending on the category of the

My vision is to find out the average factors for each level (from 2200 to 2850
step Elo 50) and in another step to pre-calculate all distributions and to fill
a huge table for any possible game (where for example also the distribution of
2600 – 2500 = 52.0% / 34.8% / 13.2% would be stored). The speed of the
simulation would be enourmously accelerated.

I look forward to your comments.

Best regards,

This page took 0 seconds to execute

Last modified: Thu, 15 Apr 21 08:11:13 -0700

Current Computer Chess Club Forums at Talkchess. This site by Sean Mintz.