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

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.