Understanding Cryptographic Randomness (CSPRNG)
Standard random functions like JavaScript's native Math.random() employ pseudo-random number generator (PRNG) algorithms such as xoshiro128+ or v8's Marsaglia multiply-with-carry. While sufficient for basic UI animations, PRNGs are deterministic, periodic, and susceptible to predictability once their internal seed state is inferred.
Our tool exclusively utilizes the Web Cryptography API (window.crypto.getRandomValues), which interfaces directly with your operating system's entropy pool (e.g. /dev/urandom on Linux/macOS or BCryptGenRandom on Windows). To guarantee true uniform probability across custom intervals, we implement mathematical rejection sampling:
| Feature | Standard Math.random() | Our CSPRNG Tool |
|---|---|---|
| Entropy Source | PRNG seed in userland memory | OS Kernel Entropy Pool (CSPRNG) |
| Modulo Bias | Subject to pigeonhole bias on large ranges | 0.00% Bias via rejection sampling |
| Cryptographic Security | No (Predictable seed sequence) | Yes (Approved for key generation & lotteries) |
| Network Latency | 0ms (Client-Side) | 0ms (100% Client-Side, Zero Telemetry) |
How to Use the Generator Modes
Integers Mode
Set any inclusive bounds (positive or negative) and generate up to 10,000 numbers with strict duplicate or sorting options.
Polyhedral Dice
Simulate tabletop gaming dice rolls (d4 to d100) with roll modifiers (+/-) and individual die breakdown summaries.
Lottery Balls
Run authentic lottery ball draws with animated visual ball drops for 6/49, US Powerball, Mega Millions, and custom draws.
Name & List Shuffler
Paste names, raffles, or contestant lists to pick unbiased random winners or randomize seating and tournament brackets.
Frequently Asked Questions
Our tool supports safe integer ranges between -9,007,199,254,740,991 and 9,007,199,254,740,991 (JavaScript Number.MAX_SAFE_INTEGER). For batch quantities, you can generate up to 10,000 numbers in a single instant click.
No. 100% of the computations, seeds, and generation history occur locally in your browser session. No data, queries, or output arrays are ever sent over the network.
When calculating rand % range from a 32-bit integer space (0 to 4,294,967,295), any numbers exceeding the largest exact multiple of the range create a slight statistical bias toward lower numbers. Rejection sampling immediately discards values in that tail threshold and draws a fresh cryptographic integer, guaranteeing mathematical uniformity.