Since the program involves Monte Carlo simulation you will not get the same output every time you run the program, but it will vary. With enough iterations however the same percentage of wins will appear on average for most of the common scenarios,
such as the favorite winning a Swiss style tournament. But it's interesting to hunt for rare upsets in hypothetical tournaments, where a player with a Elo well below the mean, such as two standard deviations (sigma) below the mean, wins the Swiss tournament.
When hunting for these rare upsets the number of games played in the tournament should be kept low. Below is an example having the following parameters: 500 players, The population mean is: 2000.0, and std Dev: 100.00 The Player Elo
is: 1850; The number games played: 6; The number iterations: 110000
After about 6.5 minutes on an Intel Core 2 Duo, the results were output as shown below. There was one upset at the Round:13662 mark. This occurred when a player rated 1784 Elo won all six games, a rare occurrence. The player
achieved these six wins against opponents rated 1978 Elo. It is unlikely that five wins would have won the tournament for such a comparatively low rated player (given the rest of the field), but rather it is more likely the player had to win
every game. This is because in the event of a tie on won/loss points, the second and third criteria for tiebreak are opponent's scores (Solkoff tiebreak) and initial Elo. Likely winning just five games out of six would have resulted in this lower
rated player losing on tiebreaks to a stronger player who also won five games but played stronger opponents and has a higher initial Elo rating.
The roundbyround scores for all six games in the tournament for this big upset player are shown below, and notice this player beat 2126 Elo and 2196 Elo players to win.
To have a chance of scoring upsets enough players must be present so that the Gaussian distribution has player Elos below two sigmas from the mean. In the below example there are 14 such players (below 1800 Elo). However, it is a balancing act
in choosing the right distribution: if you enter too big a sigma value, you will create such strong players that they will monopolize the tournament and win nearly every match simulation. Even in the below simulation the 7 players out of 500 that
had an Elo two sigmas above the mean (namely, above 2200 Elo) won 15042 times out of 110000 iterations, a total of 13.7%, even though they only constituted 7/500 = 1.4% of the player pool.
Entering the maximum allowed parameters for the program, namely 30 games a tournament, 500 players in the tournament, 1 million iterations, and a reasonably sized sigma, will cause the program to work for a long time (six hours on a Core 2 Duo; note the
program can be safely aborted at any time by closing the window it appears in), but will not usually yield any interesting upsets. This is because there are too many games played, and the probability of scoring an upset with so many games is vanishingly small,
certainly less than the proverbial 'one in a million' (if anybody finds such a game, feel free to email me, as I've not found one yet).
If anybody finds any interesting upsets, feel free to post here the parameters used.
Jay
Output of a simulation (truncated to fit, only some parts of the file are reproduced):
Log, file created at time: 11/17/2012 7:39:32 PM
The population mean is: 2000.0, and std Dev: 100.00 The Player Elo is: 1850 The number games played: 6 The number iterations: 110000
Player ID: 0, has rating: 1705.0
Player ID: 1, has rating: 1725.0
Player ID: 2, has rating: 1730.0
Player ID: 3, has rating: 1730.0
Player ID: 4, has rating: 1733.0
Player ID: 5, has rating: 1759.0
Player ID: 6, has rating: 1777.0
Player ID: 7, has rating: 1780.0
Player ID: 8, has rating: 1784.0
Player ID: 9, has rating: 1784.0
Player ID: 10, has rating: 1787.0
Player ID: 11, has rating: 1790.0
Player ID: 12, has rating: 1790.0
Player ID: 13, has rating: 1795.0
Player ID: 14, has rating: 1801.0
// deletions
Player ID: 36, has rating: 1853.0
// deletions
Player ID: 491, has rating: 2196.0
Player ID: 492, has rating: 2199.0
Player ID: 493, has rating: 2206.0
Player ID: 494, has rating: 2208.0
Player ID: 495, has rating: 2212.0
Player ID: 496, has rating: 2212.0
Player ID: 497, has rating: 2264.0
Player ID: 498, has rating: 2265.0
Player ID: 499, has rating: 2294.0
Subject Player of Elo 1850 won 7 times out of 110000 iterations, a total of 0.0% percent
Winning Players within 50 Elo of Subject player (1800 to 1900) won 340 times out of 110000 iterations, a total of 0.3%
Winning Players having an Elo:2200 or greater, two sigma or greater from the mean, won 15042 times out of 110000 iterations, a total of 13.7%
Winning Players having an Elo between:2100 and 2200, 12 sigma above mean, won 45891 times out of 110000 iterations, a total of 41.7%
Winning Players having an Elo of 1900 to 2100, within 1 sigma of the mean:2000.0, won 48726 out of 110000 iterations, a total of: 44.3%
Winning Players having an Elo of 1800 to 1900, between 1 to 2 sigmas below mean (2000), won 340 out of 110000 iterations, a total of: 0.3%
Winning Players having an Elo below: 1800, below 2 sigmas of mean, won 1 out of 110000 iterations, a total of: 0.0%
.................................after 6 rounds per iteration, and 110000 iterations
The list of top ten upsets (Elo less than 2 sigma below mean) for 10 or more players
Upset Winning Player Stats (ID:9, Rating:1784, Round:13662, Total Score:6,Avg. Elo Opponent:1978.0,Performance Elo:7533.0)
The upset player has the following stats for the round 13662:
OpponentID, Rating,W/L result (W=Win; L=Loss):202,1983.0,W
OpponentID, Rating, W/L result (W=Win; L=Loss): 129,1937.0,W
OpponentID, Rating, W/L result (W=Win; L=Loss): 455,2126.0,W
OpponentID, Rating, W/L result (W=Win; L=Loss): 25,1831.0,W
OpponentID, Rating, W/L result (W=Win; L=Loss): 13,1795.0,W
OpponentID, Rating, W/L result (W=Win; L=Loss): 491,2196.0,W
...end upset player data...
End of upsets list
First 1000 winners displayed (max.) )
//DELETIONS
Program elapsed time: 00:06:32.6780094

