well, that’s certainly true, you can do probably fair voting. “So what happens if players don’t send random numbers?” — there’s no big deal with that, you can simply take and add to the numbers one more — hash of the block the last number was mined. Problem with this approach is clear: incentive model. Even if you penalize users who don’t reveal their number, the potential outcome from this situation (particular random number won’t be generated) — might big larger that penalty. As far as I concerned, there’s only one workable way to have unpredictable tamper resistant pseudo-random generator on the blockchain — have it on the built-in consensus level.