tooloora

Random Picker — wheel, numbers & shuffle

Spin a wheel of names, draw random numbers or shuffle a list — with your browser's cryptographic randomness, nothing uploaded.

Runs locally — nothing is uploaded

What should be drawn?

4 entries

Every draw happens in your browser using your device's cryptographic random generator — no server, no account, nothing transmitted.

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.

Frequently asked questions

Is the draw really random, or is it rigged?

Every draw uses crypto.getRandomValues, your browser's cryptographic random source, combined with rejection sampling. Rejection sampling discards the few values that would make one outcome slightly more likely, so all entries have exactly the same chance. The wheel animation is decoration: the winner is drawn first, then the wheel is turned to that segment.

Are my names or lists sent anywhere?

No. Everything happens in your browser — there is no server call, no account and no analytics on your entries. Your entry lists are kept in your browser's local storage so the tool opens where you left it; the draw history and the wheel position are not stored at all. Clearing your browser data removes everything.

Can I draw lottery numbers without repeats?

Yes. In the numbers mode, set the range (for example 1 to 49), the amount and switch on "no repeats". If you ask for more numbers than the range holds, the tool draws every value once and tells you that it capped the amount.

Why not just use Math.random?

Math.random is fast but explicitly not designed for security or fairness guarantees, and it is seeded per browser session. crypto.getRandomValues draws from the operating system's entropy pool. For a raffle among colleagues either would do; the cryptographic source simply removes the debate.

Is a draw here legally valid for a raffle or prize game?

It is a fair draw, but it is not certified or logged — nothing leaves your device, so there is no audit trail we could produce afterwards. For prize games with legal requirements, document the draw yourself (screenshot, witnesses) or use a notarised procedure.

Does the wheel work with reduced motion settings?

Yes. If your system is set to "reduce motion", the wheel jumps straight to the result instead of spinning. The outcome is identical — only the animation is skipped.