True random vs Math.random
Both can look random. Only one is built so a fair name pick is hard to steer or replay.
Try a fair pick →What Math.random usually is
In browsers, Math.random() is typically a pseudorandom number generator
(PRNG): a deterministic algorithm. It expands internal state into values that pass
casual “looks random” checks. That is excellent for animations, shuffle toys, and
games. It is not designed as a fairness guarantee for a public draw.
Many PRNGs start from a seed. If you know the seed (or can influence the state), you can often reproduce or predict later outputs. Client-side pickers also leave the decision where spectators can inspect and modify scripts.
What “true random” / entropy-backed means
An entropy-backed system samples unpredictable physical and environmental noise collected by the operating system — timing jitter, hardware noise, and similar sources. That entropy seeds and refreshes a cryptographically strong generator. Unpredictability comes from outside a fixed recipe you can rewind from a known start.
Side-by-side
- Source: PRNG math vs OS entropy
- Replay: same seed → same sequence vs fresh noise per draw
- Where it runs: easy to put in the browser vs server-side selection
- Best for: visuals and games vs fairness-sensitive picks
How Pick a Name does it
Each Spin asks the server for an entropy-backed choice over your list with equal odds
(including careful mapping so big random numbers do not bias small lists). The reel
only reveals the result. Developers can use the same model through the
public API (one-of, shuffle, sample, and more).
When Math.random is still fine
Confetti, particle effects, single-player games, and anything where nobody needs to trust the outcome socially. When the room has to believe “it wasn’t rigged,” prefer entropy-backed, server-side picks.