True Random vs Pseudo-Random Numbers — What's the Difference?
Not all random number generators are created equal. The difference between true random and pseudo-random numbers matters enormously for security, science, and fairness. This guide explains the two types, when each should be used, and why this tool uses the gold-standard cryptographic approach.
Pseudo-Random Number Generators (PRNGs)
Most programming languages use PRNGs by default — including JavaScript's Math.random(). A PRNG starts with a "seed" value and runs a deterministic algorithm to produce a sequence of numbers that looks random. The problem: if you know the algorithm and seed, you can predict every number in the sequence. PRNGs are fast and statistically uniform, but not cryptographically secure.
Cryptographically Secure Random (CSPRNG)
This tool uses the Web Crypto API's crypto.getRandomValues() — the browser's CSPRNG. It draws entropy from truly unpredictable sources like hardware interrupts, mouse movements, and CPU timing. The output is mathematically impossible to predict even if you know every previous number. This is the same standard used in SSL certificates, password generation, and encryption keys.
The Gaussian (Normal) Distribution
The Gaussian mode generates numbers following a bell curve — most values cluster around the mean, with fewer values further away. This distribution appears everywhere in nature: heights, test scores, measurement errors, stock returns. Use it for simulations, statistical modeling, and any scenario where real-world variability needs to be modeled.
Practical Use Cases
- Giveaways and contests: Use Bulk mode with unique numbers to fairly pick winners from a numbered list.
- Teaching statistics: Generate Gaussian distributions to demonstrate central limit theorem.
- RPG gaming: Use Dice mode for tabletop RPG rolls — d4 through d100.
- Lottery: Use Lottery mode for 6/49, Powerball or custom formats.
- Random sampling: Use Sequence mode to shuffle an ordered list for random sampling.
- Security: Use Single mode for OTP seeds, verification codes and random identifiers.