The 1–100 range
One to a hundred is the default range of the internet, and the reason is arithmetic: each number is worth exactly 1 percent, so the odds need no explaining to anyone.
It is also the range where guessing by hand fails most visibly. Asked to name a number between 1 and 100, people converge on 37 and 73 and steer away from anything round or repeated. The two least-chosen answers are 100 and 50.
Here the spread is flat. Draw a thousand times and every number turns up around ten times, give or take the wobble a fair draw is entitled to.
- 1 to 100, both included
- 100 whole numbers
- 1%, exactly 1 in 100
- 1 to 10 numbers per draw
- None inside a multi-number draw
- Every draw gets a link that replays it
What a 1–100 draw is for
- Running a giveaway or raffle with up to a hundred entries
- Picking a percentage at random for a test or a game
- Choosing a page, question or item from a hundred-item list
- Settling a guess-the-number contest
- Sampling a 1 percent slice of a batch
How the randomness works
Every tap calls crypto.getRandomValues, the browser's cryptographic generator, and asks it for one unsigned 32-bit value. That lands somewhere between 0 and 4,294,967,295, and it then has to be folded down to the 100 numbers in this range.
Folding it down with a plain remainder is where most generators go wrong, an error known as modulo bias. 100 does not divide 4,294,967,296 evenly: 96 values are left over at the top, and wrapping them around would make the first 96 numbers in the range fractionally likelier than the rest. This tool throws away any raw value at or above the last exact multiple of 100 and draws a fresh one instead. That is rejection sampling. It fires about 1 in 44,739,243 draws, and it is the difference between 1% exactly and 1% approximately.
Ask for more than one number and the tool keeps drawing until it holds that many distinct values, then sorts them ascending. Nothing is seeded, nothing is sent anywhere, and each draw is independent of the one before it. The roll history under the tool lives in your browser's local storage, where the clear button empties it. The daily lucky numbers elsewhere on this site work the opposite way on purpose: they use a seeded generator so the same date always returns the same set. How random is random sets the two side by side.
One percent per number, exactly, and the exactness is doing real work. A hundred does not divide the 4,294,967,296 values a 32-bit draw can hold; 96 are left over. Fold those in with a plain modulo and the numbers 1 to 96 become very slightly likelier than 97 to 100. Discard and redraw instead, which is what happens here, and the 1 percent is real rather than nearly real. The cost is one extra draw in about 45 million.
- crypto.getRandomValues, the browser's cryptographic generator
- One unsigned 32-bit value, sometimes more
- Rejection sampling onto 100 slots
- 96 of 4,294,967,296 raw values, redrawn
- No. These tools are never seeded
- Your browser. No server ever sees a draw
1–100 — frequently asked
Tap Generate. The range is already set to 1–100 and each number carries a flat 1 percent. Raise the count if you need several at once, up to ten, and they come back without duplicates.
Both are odd, prime, non-round and end in a digit that feels unpatterned, which is what people reach for when they are trying to seem random. Round numbers and doubles get avoided for the same reason. Ask enough people and the histogram has visible spikes exactly where a fair draw has none.
Yes, and the guarantee is mechanical rather than statistical. Raw 32-bit values that would skew the mapping onto 100 slots are discarded and redrawn, so no number ends up with a fractionally larger share. That is what rejection sampling buys.
Set the count up to ten. The numbers arrive sorted and with no repeats, which covers a first prize and its runners-up in a single draw.