The modulo trap that most random pickers fall into
There is a bug so common in random number code that it has its own name. You take a random byte or word, you take the remainder against your range, and you call it done. It looks correct, it passes a casual eyeball test, and it is measurably wrong.
The reason is arithmetic. A 32 bit word has 4,294,967,296 possible values. If your range is 100 wide, that does not divide evenly, so the leftover values at the top of the space wrap around and land on the first few numbers of your range a fraction more often than the rest. On a handful of draws you will never notice. On a giveaway with ten thousand entries, or a simulation, the skew is real.
This generator throws those leftovers away instead. It computes the largest exact multiple of your range that fits inside 32 bits, draws words until one lands below that line, and only then takes the remainder. Words above the line are discarded and redrawn. The cost is an occasional extra draw; the benefit is a genuinely flat distribution.
Pulling twenty unique numbers between 1 and 500
- Leave What do you want to generate? on Random number (custom range).
- Set Minimum (ignored for dice/coin) to 1 and Maximum (ignored for dice/coin) to 500.
- Set How many numbers? to 20. The ceiling is 1000.
- Tick No repeats (unique numbers) so no value can appear twice.
- Tick Sort results if you want them in ascending order rather than draw order.
- Click Random Number Generator. The numbers appear one per line in a read-only box.
- Copy to clipboard takes the whole list. Generate more clears it and gives you the options back for another draw.
The output is plain lines with nothing around them, which is deliberate: it pastes straight into a spreadsheet column, a script, or a message without any cleanup.
Where the three modes really differ
The custom range mode is the only one that reads your minimum and maximum. The dice preset always draws from one to six and the coin preset always draws from a two-outcome space, printing the words rather than the raw digits. Both ignore the range boxes entirely, and the labels on those boxes say so rather than leaving you to guess.
That design choice repeats across this site wherever one tool covers several modes: fields belonging to an inactive mode stay on screen and go unread, instead of the page rearranging itself under your cursor.
Coin flips inherit everything the numeric path has. The draw is cryptographic, the distribution is flat, and asking for two hundred flips gives you two hundred lines you can paste somewhere and count.
Two ways to ask for something impossible
A minimum above the maximum is refused rather than quietly swapped. Someone who types 100 and then 1 has almost certainly made a typo, and silently reinterpreting it would hide the mistake behind a plausible-looking result.
Asking for more unique values than the range can supply is refused too, and this one matters more than it sounds. Without the check, a request for ten distinct values from a range of five would keep drawing forever looking for a sixth that does not exist, and the tab would lock up. The count against range size happens before the first draw, so the refusal is instant.
Both refusals are honest inside the code and invisible on screen. The shell wrapped around this tool catches everything a tool throws and shows one fixed sentence about something going wrong, so the specific diagnosis never makes it to you. If you hit that banner, look at your range and your no-repeats tick before anything else.
Picking the right tool for the shape of your draw
A number is not always what you actually want. If you are picking a person rather than a value, Wheel of Names spins through a list you paste in and lands on one entry. For a bracket or a set of balanced groups, Team Generator and Bracket Generator do the allocation for you rather than making you map numbers back onto names.
For a tabletop session, Dice Roller gives you the animated version of the six-sided preset here, and Coin Flip does the same for the two-outcome case. When the random value is a secret rather than a pick, use Password Generator, which draws from the same cryptographic source with the same rejection sampling discipline applied at byte level. Everything else lives on the generators hub.

