Lottery Number Generator - Random Draws for Powerball, Mega Millions & More
Generate cryptographically random lottery numbers for Powerball, Mega Millions, EuroMillions, and custom games. CSPRNG-powered, unbiased draws.
About
Lottery draws rely on uniform random selection from a finite pool. A generator that uses Math.random is a pseudorandom number generator seeded by system time. Its output is deterministic and predictable given the seed. This tool uses the browser's crypto.getRandomValues interface, which pulls entropy from operating system sources (hardware interrupts, thermal noise, interrupt timing). The result is a cryptographically secure pseudorandom number generator (CSPRNG) that meets NIST SP 800-90A requirements. Selection uses a Fisher-Yates shuffle over the full number pool n, then picks the first k elements. This guarantees each combination has equal probability of 1C(n, k). For Powerball, that is 1 in 292,201,338. No generator changes these odds.
What this tool eliminates is human bias. Studies show people avoid numbers above 31 (birthday bias), cluster toward "lucky" numbers, and underweight high values. This skews shared-jackpot risk. The tool also tracks frequency across your draw history. This is not predictive. Lottery draws are independent events. But frequency data lets you verify the generator's uniformity over time. Presets cover Powerball (5/69 + 1/26), Mega Millions (5/70 + 1/25), EuroMillions (5/50 + 2/12), and custom configurations.
Limitation: this tool generates numbers client-side. It does not connect to any lottery authority. Verify draw rules with your local operator before purchasing tickets.
Formulas
The number of possible combinations for selecting k numbers from a pool of n is given by the binomial coefficient:
C(n, k) = n!k! ⋅ (n − k)!
For games with a bonus pool, total odds multiply main and bonus combinations:
Odds = C(nmain, kmain) × C(nbonus, kbonus)
For Powerball: C(69, 5) × C(26, 1) = 11,238,513 × 26 = 292,201,338
The Fisher-Yates shuffle iterates index i from n − 1 down to 1, swapping element at i with a uniformly random element at index j where 0 ≤ j ≤ i. Entropy source: crypto.getRandomValues provides 32-bit unsigned integers. To avoid modulo bias, rejection sampling discards values above the largest multiple of the range.
Where n = total numbers in pool, k = numbers to pick, i = current shuffle index, j = random swap target.
Reference Data
| Lottery Game | Main Pool | Pick | Bonus Pool | Bonus Pick | Jackpot Odds | Draw Days |
|---|---|---|---|---|---|---|
| Powerball (US) | 1 - 69 | 5 | 1 - 26 | 1 | 1 in 292,201,338 | Mon, Wed, Sat |
| Mega Millions (US) | 1 - 70 | 5 | 1 - 25 | 1 | 1 in 302,575,350 | Tue, Fri |
| EuroMillions | 1 - 50 | 5 | 1 - 12 | 2 | 1 in 139,838,160 | Tue, Fri |
| EuroJackpot | 1 - 50 | 5 | 1 - 12 | 2 | 1 in 139,838,160 | Tue, Fri |
| UK Lotto | 1 - 59 | 6 | - | 0 | 1 in 45,057,474 | Wed, Sat |
| Lotto 6/49 (Canada) | 1 - 49 | 6 | 1 - 49 | 1 | 1 in 13,983,816 | Wed, Sat |
| Oz Lotto (Australia) | 1 - 45 | 7 | - | 0 | 1 in 45,379,620 | Tue |
| SuperEnalotto (Italy) | 1 - 90 | 6 | 1 - 90 | 1 | 1 in 622,614,630 | Tue, Thu, Sat |
| La Primitiva (Spain) | 1 - 49 | 6 | 0 - 9 | 1 | 1 in 139,838,160 | Thu, Sat |
| Loto (France) | 1 - 49 | 5 | 1 - 10 | 1 | 1 in 19,068,840 | Mon, Wed, Sat |
| Lotto (Germany) | 1 - 49 | 6 | 0 - 9 | 1 | 1 in 139,838,160 | Wed, Sat |
| Tattslotto (Australia) | 1 - 45 | 6 | - | 0 | 1 in 8,145,060 | Sat |
| Toto (Singapore) | 1 - 49 | 6 | - | 0 | 1 in 13,983,816 | Mon, Thu |
| Japan Loto 6 | 1 - 43 | 6 | - | 0 | 1 in 6,096,454 | Mon, Thu |
| Mega Sena (Brazil) | 1 - 60 | 6 | - | 0 | 1 in 50,063,860 | Wed, Sat |