What would be the Elo of a computer program that plays random moves?
For the sake of simplicity, assume that he never asks for a draw or resigns and never accepts a draw offer.
Chess Stack Exchange is a question and answer site for serious players and enthusiasts of chess. It only takes a minute to sign up.Sign up to join this community
Right at the bottom of the Computer Chess Rating List for the 40/4 time control is Brutus RND, an engine that simply selects random legal moves.
It has a rating of 205 (as of 6/6/2018). This is not a FIDE rating of course, but it is using the Elo system.
It has 0 wins, 242 losses and 64 draws. The draws are due to faulty programs that accidentally cause draws by repetition or occasionally stalemate, though they generally have a substantial material advantage when this occurs.
FIDE has a rating floor of 1000. Brutus RND would simply fail to establish a rating that high and would be unrated.
If we ignore the FIDE rating floor, it is possible to have a negative rating under the Elo system.
One point to mention is that FIDE uses a table to calculate rating changes and if the rating difference is greater than 735, no change occurs when the stronger player wins. This means Brutus could never have a rating of -5000 or anything like that because it would need to lose points to spectacularly incompetent players that would not be capable of delivering checkmate.
We are left guessing here. 1000 Elo rated players would be able to get Brutus's rating down to 265, but since there are no players with worse ratings, we cannot say exactly how much further they could push Brutus's rating down if they did exist.
I would guess that players that are 500 Elo or worse would have trouble delivering mate consistently, much like the faulty programs. Draws by 3-fold repetition or the 50 move rule are not automatic under FIDE rules and would only occur if Brutus claimed them. But a human could lose by running out of time, as well as drawing by accidental stalemate.
So I'm guessing somewhere in the -200 to 200 range if FIDE allowed ratings below 1000 and allowed Brutus to compete.
The problem with random play is that on an average chess position there are many many moves (from 20 in the opening to easily 50 or more in complicated endgames), but only a handful of those are acceptable. Random moves will result in total discoordination from the very beginning of the game. Moreover, capturing less valuable pieces would be very common, specially in the middlegame. This said, even against extremely weak opposition, the computer will, in the long run, blunder: tons of material will be traded and possibly not many good for the computer, the computer will be undoubtedly undeveloped, his king won't be safe and possibly not even castled...
So many bad things piling up, and extremely quickly, will result in a sure defeat for the machine. His Elo will probably be 0 FIDE.
I'm not sure how Go ratings compare to chess, but random play is about -3500 there. Since the branching factor for chess is lower I'd expect the random player elo to be higher, maybe somewhere between -2000 and -500.
Worse than an absolute beginner who barely knows the rules of the game, because at least the beginner puts some thought into choosing a move. Their moves may still be mostly random, but at least there's some evaluation of positions going on.
So this engine's rating would be at the lowest possible floor of whatever rating system you choose. It might eventually win or draw a game against an equally bad opponent, and then increase by a few points. However, you can expect the engine's rating to rapidly sink back to the minimum floor afterwards.
In Shannon's "Programming a Computer for Playing Chess", he notes that the probability of random play beating Botvinnik is of the order of 10^-75. Thus, if this random computer were to play Botvinnik (or even a regular master) non-stop for a human lifetime, we can reasonably expect it to never win.
However, Shannon goes on to say that random play isn't the worst strategy; the worst strategy is deliberately playing moves that aid the opponent. While it's possible a complete beginner could do this, the chances are they'll try to play moves that improve their own position.
A very good answer would be to do this:
Use numpy, a very weak game engine, 1500 ELO or so, and attach a python script to it. There are many libraries that provide you with the possible moves in a position, so we can pick one at random. I will post the results later.
You should also check this out.