As you might expect, promoting the best works well if future competence is correlated to past competence. Promoting the worst works best if future competence is uncorrelated with past competence. Promoting at random works no matter what the correlation really is, and promoting the best or worst can be made to produce the same overall outcome no matter what the future competence rule is.
I find this rather disquieting when you try and map this into real organizations. Could you really do promotions on a random basis ?