5

Now it's fine either as percentage of all FIDE players registered or just as number itself (like either 1/100k players are rated above X, or 23 players rated above X, respectively). Let's say by their peak rating and not necessarily current one.

If unclear what I mean, let's take an example: Last time I checked there were 10 players who reached a rating of over 2800 ELO at some point in their career. I don't know how many FIDE players there are, but if, say, a million, then rarity here is 10/1,000,000. Or we could simply use the number 10.

Now I'm looking for something similar but in a table, like with +2700, +2600, and all the way down. Do you think such information is available? Thanks.

edit: I wanted specific numbers which the other thread had not provided. I am happy with the answer I've chosen now.

9

According to the list downloaded here, there are currently 261782 players with a FIDE rating. I wrote a small program to analyze it, and here are the results:

-------------------------
Rating  Number of players
2800+   5
2750+   18
2700+   43
2650+   114
2600+   262
2550+   514
2500+   921
2450+   1641
2400+   3130
2350+   5223
2300+   8669
2250+   13791
2200+   21033
2150+   30045
2100+   41411
2050+   54631
2000+   69229
1950+   83243
1900+   97932
1850+   112783
1800+   127483
1750+   141826
1700+   155776
1650+   168856
1600+   180987
1550+   192154
1500+   202332

Keep in mind that there are a lot of countries where club level players (1500 - 2000) have a national rating but not a FIDE rating.

For reference, here is the Java program I wrote. Feel free to modify it for your own analysis.

public static void main(String[] args) throws Exception {
    BufferedReader reader = new BufferedReader(new FileReader("rating.txt"));
    String line;
    int[] frequencies = new int[3000];
    boolean first = true;
    while ((line = reader.readLine()) != null) {
        if (first) {
            first = false;
            continue;
        }

        frequencies[Integer.valueOf(line.substring(113, 117))]++;
    }

    int total = 0;
    for (int rating = 3000 - 1; rating >= 0; rating--) {
        total += frequencies[rating];
        if (rating % 50 == 0) {
            System.out.println(rating + "+\t" + total);
        }
    }
}
  • thank you very much, I wanted specific numbers, unlike the other question which had a graph so this is just perfect, thank you for doing this for me – JSavant Jan 2 '17 at 1:00

Not the answer you're looking for? Browse other questions tagged or ask your own question.