Numbers, dice, coin flips, and list picker
Most programming languages include a built-in random function — JavaScript's Math.random(), Python's random.random() — but these are pseudo-random number generators (PRNGs). They use a deterministic algorithm starting from a seed value. Given the same seed, they always produce the same sequence of numbers. They're fast and fine for games and simulations, but not suitable for security-sensitive uses.
This tool uses crypto.getRandomValues() — the Web Cryptography API — which gathers entropy from hardware events (mouse movements, keystrokes, hardware interrupts) that are physically unpredictable. The result is cryptographically secure randomness, the same standard used for generating cryptographic keys and passwords.
For everyday uses like dice rolls, raffle draws, and random sampling, the difference is academic — both feel random in practice. But for anything where predictability would be a problem (passwords, tokens, security challenges), cryptographically secure randomness is essential.
All random values are generated using crypto.getRandomValues() — the Web Cryptography API built into all modern browsers. This produces cryptographically secure randomness, not pseudo-random values. The list picker uses a Fisher-Yates shuffle seeded with cryptographic entropy for unbiased random selection. Nothing is sent to any server.