Actually, this whole scenario was one that Apple ran into with their iPod random play feature. What they found, and effectively what I'm complaining about above, is that true randomness often doesnt match with human-percieved randomness.
You can completely validly end up casting stairs that are all of one type ten of fifteen times in a row, and have it still be mathemetically random. But the experience of that randomness will feel non random.
What Apple did over time was tweak their randomness to match more closely what humans expect randomness to be vs. true mathematical randomness. IE, if a song by band X was just chosen, then dont select another song by that band for a little while. This way, the random (but experientially non-random) situation of 4 songs by the same band being played is avoided. It makes it all less mathematically random, but more experientially "random".
So, we could consider something like that here perhaps (and for other things like it). If we are randomly choosing between A or B (50 percent chance of either), and, say, A is chosen, then we could make the next attempt be 40-60 for A/B, and after than 30/70 for A/B etc.
Course, this then means each of these would have to be tracked for each player and each type of thing that we want to subject to this method, which is a whole new feature and series of info to track and manage, so, as usual, easier said than done
