But a thought experiment like this...
Say 3 players, each 1200. One exclusively plays 1100, one exclusively plays 1200, and last plays only 1300.
Then during each game, we flip a coin for each player (the 1200 and their opponent). Heads their skill level goes up 50 points and tails it goes down 50 points. Over a large number of games the average for each player will be 1200, but the person who only plays 1300s will have the highest peak rating...
... at least this is what I expect. I could write some code to simulate it... this could be a fun blog post I suppose. I'll consider it.
If a 1200 flips heads twice in a row, do they go up 100 points? Or does their rating reset to 1200 after every game and can only go up to 1250 and down to 1150?
Yeah, the coin flip only lasts for that 1 game.
And I wouldn't adjust their rating, only their skill level... in other words a 1200 who is playing like a 1250 (or 1150). And that'd be for the purpose of simulating someone having a good or bad day.
EDIT
Then if they win, and their new rating is 2010 or whatever, then the next coin flip could put them at 1250 or 1150... I have to remember there are 3 ratings to keep track of which makes this a bit annoying
There's the intrinsic or base level skill (which will be 1200 and never change)
There's the adjusted skill due to having a good or bad day (which will be 1150 or 1250, and will be the one that influences win %).
And then there's the actual rating which is what will go up or down due to a win or loss.
import java.util.Random;
public class Main
{
public static void main(String[] args) {
Random r = new Random();
int x = 1200; //player who plays 1100
int y = 1200; //player who plays 1200
int z = 1200; //player who plays 1300
int games = 50;
for (int i = 1; i<= games; i++) {
int chance1 = r.nextInt(2);
int chance2 = r.nextInt(100);
//if they play like 1250
if(chance1 == 0) {
if(chance2 <= 57) {
x -= 12;
}
else
x += 20;
}
//if they play like 1150
else {
if(chance2 <= 70) {
x -= 12;
}
else {
x += 20;
}
}
}
//player who plays 1200
for (int i = 1; i<= games; i++) {
int chance1 = r.nextInt(2);
int chance2 = r.nextInt(100);
//if they play like 1250
if(chance1 == 0) {
if(chance2 <= 57) {
y+= 16;
}
else
y -= 16;
}
//if they play like 1150
else {
if(chance2 <= 43) {
y += 16;
}
else {
y -= 16;
}
}
}
//player who plays 1100
for (int i = 1; i<= games; i++) {
int chance1 = r.nextInt(2);
int chance2 = r.nextInt(100);
//if they play like 1250
if(chance1 == 0) {
if(chance2 <= 70) {
z += 12;
}
else
y -= 20;
}
//if they play like 1150
else {
if(chance2 <= 57) {
z += 12;
}
else {
z -= 20;
}
}
}
System.out.println("New rating of player who played 1300: " + x);
System.out.println("New rating of player who played 1200: " + y);
System.out.println("New rating of player who played 1100: " + z);
}
}
Set i to 5000 and see what happens
When you update ratings by a fixed amount (and under the conditions of this code), all ratings either increase forever or decrease forever.
Ok, I did a blog about setting your seeks and how it affects your rating.
https://www.chess.com/blog/llama36/maximize-your-rating-with-this-setting