The Math of Randomness: Why True Random Beats Pseudo-Random in Giveaways
When a wheel picks a winner, how random is the choice? The answer matters for giveaways, classrooms and any draw where people need to trust the result. This article explains what random means for a computer, why some generators are better than others and how this site chooses winners.
Two kinds of computer randomness
Most programming languages offer a pseudo-random number generator, such as Math.random() in JavaScript. It produces numbers from an internal state using a formula. It is fast and good enough for games and animations, but it is predictable in principle: if you know the internal state, you can calculate the next numbers. Its seed may come from the clock, and its quality is not guaranteed for anything where fairness is at stake.
A cryptographically secure generator is designed so that nobody can predict its output, even if they have seen many earlier values. Browsers expose one through crypto.getRandomValues(), which draws on entropy from the operating system, such as hardware events and timing noise.
What this site uses
Every wheel on this site chooses the winner with crypto.getRandomValues(), and it does so before the animation begins. The spinning wheel is then animated to land on the chosen slice. This means the animation cannot influence the outcome, and the speed setting, sound and colors have no effect on the odds.
Why a simple remainder is not enough
Suppose a generator gives a random number from 0 to 255 and you want a choice among 10 options. Taking the number modulo 10 looks sensible, but 256 does not divide evenly by 10. The values 0 to 5 appear 26 times, and 6 to 9 only 25 times, so the first six options are slightly more likely. This is called modulo bias.
The fix is rejection sampling: throw away any value that falls into the uneven remainder and draw again. The site's picker uses this method, so each option has exactly the same chance. For weighted entries, the same idea is applied to the total weight.
Shuffling fairly
When a list must be shuffled, the correct algorithm is the Fisher-Yates shuffle. It walks through the list and swaps each item with a random earlier or equal position. A common mistake is to sort with a random comparison, which produces biased orders. The shuffle button on the entries panel uses the correct method.
How to test a generator
You cannot prove randomness from a few results, but you can test for obvious flaws. Spin many times, count how often each option appears and compare the counts with what a fair process would give. The chi-square test measures how far the counts are from equal. A p-value that is very small, such as below 0.001, suggests a problem, while a typical fair generator produces moderate values. The page on how our randomness works lets you run this test yourself in your browser.
Streaks are normal
People expect random sequences to alternate, but real randomness has runs. In 20 fair coin flips, a run of five or more of the same side appears about a quarter of the time. A streak does not mean the generator is broken, and it does not make the next result more or less likely.
Randomness that others can check
Even a secure generator running in your browser asks the audience to trust you. A verified draw removes that trust. You commit to the list first, and the winner is then calculated from a public randomness beacon that nobody could know in advance. Anyone can recompute it.
What randomness cannot do
A fair generator does not guarantee a fair process. If entries are collected unevenly, if some people are excluded or if the list can be changed after the fact, the draw is fair only in the narrow sense. Write down your rules, fix the list before the draw and keep a record.
Try the Wheels Mentioned in This Guide
Launch these free interactive spinners right in your browser.