Random number generation is fundamental to computing, used in everything from games to cryptography. Understanding different types of randomness helps you choose the right approach for your application.
Pseudo-Random vs True Random
Pseudo-random number generators (PRNGs) use mathematical algorithms to produce sequences that appear random. They're deterministic—given the same seed, they produce the same sequence. True random number generators (TRNGs) use physical phenomena (thermal noise, radioactive decay) for genuine unpredictability. PRNGs are faster and sufficient for most applications; TRNGs are needed for cryptographic keys and high-security uses.
Cryptographically Secure RNG
Cryptographically secure PRNGs (CSPRNGs) are designed to be unpredictable even if an attacker knows the algorithm. They're essential for generating passwords, tokens, and encryption keys. Standard PRNGs (like Math.random()) should never be used for security purposes—they're predictable if the seed is known.
Common Applications
Random numbers power games (dice rolls, card shuffles, procedural generation), simulations (Monte Carlo methods, agent-based models), testing (fuzz testing, load testing with varied inputs), security (session tokens, captchas), and sampling (A/B testing, statistical surveys). Each application has different requirements for randomness quality and performance.