Random Number Generator
Draw a random number from any range
Set the lowest and highest number you want to allow, choose how many to draw, and the result appears immediately. Both ends of the range are included, so 1 to 100 can return 1 and can return 100. If you happen to type the larger number first, the tool reads it as the same range rather than refusing it.
Everything happens in your browser. The range you enter and the numbers you draw are never uploaded, stored or logged, and they are deliberately never written into the page address — a “random” number restored from a link would not be random at all.
Where the randomness comes from
Numbers are drawn from your browser’s cryptographically secure random number generator, the same facility that backs encryption keys. This matters more than it sounds. The ordinary random function built into JavaScript is fast but makes no security promise at all: given enough of its output, its future output can be predicted. For a raffle or a prize draw, that is the difference between a result you can defend and one you cannot.
Drawing uniformly is a separate problem from drawing unpredictably, and it is the one most generators get wrong. The obvious method — take a random value and divide by the size of the range, keeping the remainder — quietly favors the low end whenever the range does not divide evenly into the generator’s own range. This tool discards those values and draws again, so every number in your range is equally likely.
Drawing several numbers at once
Set How many to draw up to 100 numbers in one go. By default each is drawn independently, so the same number can appear more than once — which is correct if you are modeling something like repeated dice throws, where a repeat is a real outcome.
Tick All different to draw without replacement instead. Each number that comes out is removed from the pool, so no value can repeat within one draw. That is what you want for picking winners, assigning positions, or choosing a subset of a list.
A range can only supply as many different numbers as it contains: 1 to 10 holds ten. If you ask for more different numbers than that, the tool says how many the range actually holds rather than quietly handing back a shorter list.
Running a raffle or prize draw
Number your entrants from 1 upward, set the range to match the number of entrants, set How many to the number of prizes, and tick All different. The numbers that come back are your winners, and nobody can be drawn twice.
Because the draw runs in your browser, nothing about your entrants leaves your device. If you need a record, use the copy button and paste the result somewhere before drawing again — the tool keeps no history.
Random is not the same as evenly spread
Genuinely random draws clump. Across ten numbers from 1 to 100 you will often see two in the same decade and whole decades with none, and people reading that pattern frequently conclude the generator is broken. It is not: an evenly spread result would be evidence of the opposite, because true randomness carries no memory of what it has already produced.
The same reasoning applies to a repeat. Drawing 42 twice in a row from 1 to 100 has about a one in ten thousand chance, which sounds unlikely until you notice how many draws happen across every visitor to a page like this one. Rare things happen routinely at scale. If you need repeats prevented, that is what All different is for — it is a rule you impose, not a property randomness has on its own.
Frequently asked questions
Are these numbers really random?
They come from your browser's cryptographically secure random number generator (crypto.getRandomValues) — the same facility that backs encryption keys — not the ordinary Math.random, whose output can be predicted from values an attacker has already seen. Numbers are drawn with a method that keeps every value in the range equally likely, so no part of the range is quietly favored.
Can I use this for a raffle or prize draw?
Yes. Number your entrants from 1 upward, set the range to match, choose how many winners you need, and tick All different so nobody is drawn twice. The draw happens in your browser, so nothing about your entrants is uploaded.
What does "All different" do?
It draws without replacement: every number that comes out is removed from the pool, so the same value never appears twice in one draw. Without it, each number is drawn independently and repeats are possible — which is what you want for something like simulating dice, and not what you want for picking winners.
Why can't I ask for more different numbers than the range holds?
There aren't enough to give. A range of 1 to 10 contains ten numbers, so at most ten of them can be different. Widen the range or ask for fewer, and the tool will tell you how many the current range holds.
Are the numbers inclusive of the range I enter?
Yes. A range of 1 to 100 can return 1 and can return 100. If you enter the larger number first, the tool reads it as the same range rather than refusing it.
Is anything I enter stored or sent anywhere?
No. The range, the count and the numbers drawn stay in the page. Nothing is uploaded, stored or logged, and the settings are deliberately never written into the page address — a drawn number restored from a link would not be a fresh draw.
