Pick numbers in any range — one or thousands, whole or decimal, with or without repeats. Drawn from your browser's cryptographic source with unbiased sampling.
Result—
⚙️ Settings
Presets:
📋 All Results
📊 Statistics
Count—
Sum—
Mean—
Median—
Lowest—
Highest—
🎲 Genuinely unbiased. Most quick implementations do Math.random() * range, which is both predictable and slightly skewed. This page uses crypto.getRandomValues() with rejection sampling, so every number in your range is exactly as likely as every other — which matters for draws, sampling and anything anyone might contest.
HOW IT WORKS
Why "Random Enough" Usually Isn't
Two things quietly go wrong in most random number code. The first is the source: Math.random() is a fast statistical generator whose future output can be predicted from past values, which is fine for animations and fatal for anything anyone could gain from guessing. The second is subtler — taking a random value modulo your range biases the result, because the range rarely divides evenly into the source's size, leaving the lower numbers slightly more likely. This page avoids both: values come from the operating system's cryptographic entropy pool, and any draw landing in the biased tail is discarded and redrawn rather than folded back in. For a dice roll nobody would notice; for a prize draw or a randomised sample, it's the difference between fair and defensible and merely close.
Yes. The range is inclusive at both ends, so 1 to 6 can produce 1 and 6 as well as everything between.
What does "No repeats" do?
It draws without replacement, like pulling numbered balls from a bag. Because that requires at least as many possible values as numbers requested, you'll get a clear error rather than an infinite loop if you ask for 100 unique numbers between 1 and 10.
Can I use this for a prize draw or giveaway?
Yes — the sampling is genuinely unbiased and cryptographically sourced, which is more than most draw tools can say. For anything with legal or financial weight, record your method and the result, since no browser tool can prove to a third party when it was run.
Is the result different every time?
Yes. There's no seed and no way to reproduce a previous run — each draw pulls fresh entropy from the operating system. If you need reproducible pseudo-randomness for testing, you want a seeded generator in your own code, not this.
How many numbers can I generate at once?
Up to 10,000 per run. Beyond that the browser spends longer rendering the list than generating it, and a download is a better fit than an on-screen grid.
What are you trying to do?
Type it however you'd say it out loud.