What does this random picker do?
This tool makes random decisions right in your browser: draw a name with the wheel, pull numbers from any range you choose (with or without repeats), or shuffle a whole list into a new order. The randomness comes from your device's cryptographic generator, not from Math.random. Nothing is uploaded, nothing is stored, no account needed.
How random is the draw, really?
Every selection calls crypto.getRandomValues, your browser's Web Crypto interface, which draws from the operating system's entropy pool. The MDN Web Docs explicitly warn that Math.random does not provide cryptographically secure random numbers and must not be used for anything security-related — for crypto.getRandomValues the opposite is true.
On top of that comes a detail many online generators skip: modulo bias. Take a 32-bit random number and compute value % 3 and the smallest remainders come up slightly more often, because 2³² does not divide evenly by 3. Instead we discard the surplus values at the top of the range and draw again (rejection sampling) until a value lands in the evenly divisible part. The difference is tiny, but it is measurable — and avoidable.
How does the tool shuffle a list?
With the Fisher-Yates algorithm in Richard Durstenfeld's form (Communications of the ACM, 1964), described by Donald Knuth in The Art of Computer Programming, Volume 2, as Algorithm P. It walks the list from the back and swaps each element with a randomly chosen one from the part not yet processed. The result: each of the n! possible orderings is exactly equally likely, in linear time.
The tempting one-liner list.sort(() => Math.random() - 0.5) does not achieve this: sorting algorithms expect a consistent comparison function, and a random one skews the distribution visibly towards certain orderings.
Is the wheel rigged?
No, but the order of events is the reverse of what people assume: the winner is drawn first, then the wheel turns to exactly that segment. The animation is staging, not part of the draw. If your system is set to "reduce motion", the spin is skipped and the result appears instantly — the outcome is the same either way.
Handy for teams: with the remove winner option the drawn entry leaves the list, so you can pull a full ranking one by one without editing the text. The history below keeps track of what has been drawn so far.
Random numbers with or without repeats
- With repeats: like rolling a die — every number can come up more than once. Useful for simulations, sampling with replacement, game rounds.
- Without repeats: like a lottery draw — every number appears at most once. If you ask for more numbers than the range holds (say 20 numbers from 1 to 5), the tool draws every value once and openly tells you it capped the amount.
For small ranges we shuffle the entire range and cut it off; for very large ranges we draw and discard duplicates. Both paths are uniformly distributed, they only differ in memory use.
Where are the limits?
Honestly: this draw is fair, but it is not provable. Because nothing leaves your device, no log exists afterwards that we could confirm. A prize game with legal requirements needs a documented or notarised draw; for the team raffle, the seating order or Secret Santa, this tool is entirely sufficient.
Second limit: the wheel stays readable up to roughly 30 entries. More entries are still processed, but the labels get cramped — for long lists the shuffle mode is the better choice.