Random number generator

Pick a range, how many you need, and whether repeats are allowed. Cryptographically random, generated on your device.

How to draw your numbers

  1. Enter the minimum and maximum. Both ends are included, and negative numbers are fine, so -50 to 50 is a legal range.
  2. Set how many numbers you want, up to 10,000 in one draw.
  3. Choose whether repeats are allowed. "No repeats" behaves like drawing numbered balls from a drum: each value can appear at most once.
  4. Click Generate, then Copy if you need the results elsewhere.

A worked example: a raffle with 250 tickets

You sold tickets numbered 1 through 250 and have five prizes. Set minimum 1, maximum 250, count 5, repeats to No repeats, and click Generate. You get five distinct winning ticket numbers, for example 187 42 250 9 113. Because repeats are forbidden, no ticket can win twice, and because both endpoints are inclusive, ticket 250 has exactly the same chance as ticket 1. If you accidentally ask for more unique numbers than the range holds, say 300 winners from 250 tickets, the tool refuses with a message telling you the range only holds 250 distinct values rather than looping forever or silently allowing duplicates.

Why the draw is genuinely uniform

Every number comes from crypto.getRandomValues, the browser's cryptographic random source, not Math.random. On top of that the code applies rejection sampling: raw 32-bit random values that would introduce modulo bias are discarded and redrawn, so every value in your range is equally likely to the limit of what software can promise. The no-repeats mode is smarter than it looks. For dense draws, like picking 200 of 250 values, it builds the range and runs a partial Fisher-Yates shuffle; for sparse draws, like 5 winners from a million, it draws and rejects duplicates. You never see the difference, but the dense path is what keeps a big draw from grinding as the remaining pool shrinks. Numbers are separated by spaces for short results and commas once you pass 20, purely for readability.

Honest limitations

The generator works in whole numbers only; there is no decimal mode, so for a random price between 1.00 and 5.00 you would generate between 100 and 500 and divide by 100 yourself. Draws are capped at 10,000 numbers, and the dense shuffle path only engages for ranges up to a million values, beyond which unique draws fall back to draw-and-reject, which is fine for small counts and slow if you ask for a huge unique sample from a huge range. There is no draw history and no seed option: you cannot reproduce yesterday's draw, which is a feature for fairness and an annoyance for debugging. Screenshot results you need to prove later.

Frequently asked questions

How random are these numbers?

They come from your browser's crypto.getRandomValues, the same source used for encryption keys, with rejection sampling to keep every value in the range equally likely. That is as unpredictable as software gets.

Can I draw numbers without repeats?

Yes, turn on "no repeats" and each value appears at most once, like drawing lottery balls. The count is then capped at the size of the range.

Is this suitable for raffles and giveaways?

Yes. Number your entries, generate one winner (or several with no repeats), and screenshot the result. For picking winners by name instead, use the random name picker on this site.

Are negative ranges allowed?

Yes, any whole-number range works: -50 to 50, 1 to 10, or 1 to a billion. The minimum just has to be at or below the maximum.