The reason we use a random distribution is to distribute the load evenly. If you think about the fact that random is, for all intents and purposes, uniformly distributed, then it becomes clear that over large numbers, this scheduling algorithm has to work.
Why don't we create an overall schedule, you might ask? The reason is that the constraints we have to work with would imply a lot of work for little or no gain:
- There's much more than badges being executed on scheduled intervals
- Almost every batch is executed once per site, or around 230 times currently
- We keep on adding sites, so our schedule changes regularly.
- The timing of the batches changes a lot as sites grow, and as we optimize them.
- The batches basically all hit the same database server (a part from SO, which has its own), so load distribution is a real concern.
I can't really think of an algorithm which is much more efficient to deal with our constraints than shooting at random based on some "sane" probabilities.
The advantage of such a simple an algorithm should be evident: we haven't needed to change it in years and it served us well so far.