Pick random numbers in any range - one at a time or in a batch, with or without duplicates, whole numbers or decimals.
Numbers come from your browser's cryptographically secure random source. Nothing is sent anywhere.
Enter a minimum and a maximum, choose how many numbers you want, and press Generate. The tool picks each number uniformly at random from your range, which means every value has exactly the same chance of being chosen. The result appears instantly with its sum, average, smallest and largest value. Nothing is sent to a server, and nothing is saved once you close the page.
The range is inclusive. With a minimum of 1 and a maximum of 6, both 1 and 6 can come up, just as on a die. Negative numbers work too: a range of -10 to 10 has 21 possible values, including zero.
The preset buttons fill in the settings for the most common jobs and generate straight away. Die (1-6) rolls a standard six-sided die, and d20 rolls the twenty-sided die used in many tabletop games. 1-10 and 1-100 cover the classic "pick a number" games. Lottery (6 of 49) draws six different numbers from 1 to 49 and turns on the no-duplicates option. You can change any field afterwards and generate again.
By default each number is drawn independently, so the same value can appear more than once, exactly like rolling a die several times. Tick No duplicate numbers and every number in the batch will be different, like drawing tickets from a hat without putting them back. Use it for raffles with several prizes, choosing people for a sample, or picking lottery numbers.
Duplicates are more likely than most people expect. If you draw 5 numbers from 1 to 100 with duplicates allowed, the chance that at least two match is 9.65%. Draw 10 numbers and it rises to 37.18%. This is the same effect as the birthday problem: with only 23 people in a room, there is a 50.73% chance that two share a birthday. If your task needs every value to be different, turn on the no-duplicates option rather than hoping.
The reverse limit applies too. You cannot draw more unique numbers than the range holds. Asking for 10 different numbers between 1 and 5 is impossible, and the tool will tell you so instead of quietly repeating a number.
Set Decimal places to 1, 2, 3 or 4 to get numbers like 47.3 or 12.85. The generator treats the range as a grid of evenly spaced values and picks one at random. For example, a range of 0 to 1 with 2 decimal places has 101 possible values (0.00, 0.01, and so on up to 1.00), and each one is equally likely. If your minimum or maximum does not land exactly on the grid, the tool uses the nearest values inside your range. With 0 decimal places and a minimum of 1.5, the smallest possible result is 2.
Many simple random number tools use JavaScript's Math.random(), which is fast but was never designed to be unpredictable. This generator uses the Web Crypto API instead. Your browser fills a block of random bytes from the operating system's secure random source, the same source used to create encryption keys. Those bytes are then turned into numbers in your range without bias.
Bias is a subtle problem, and it is worth understanding because many generators get it wrong. The obvious way to turn a random byte (0 to 255) into a number from 0 to 99 is to divide by 100 and keep the remainder. But 256 does not divide evenly by 100. The values 0 to 55 each appear three times among the 256 possible bytes, while 56 to 99 appear only twice, so the low numbers would come up 50% more often. This tool avoids that by throwing away any draw that falls in the uneven leftover part and drawing again, so every number in your range is exactly as likely as every other.
Choose the Lottery (6 of 49) preset. The tool draws six different numbers from 1 to 49 and, with sorting on, shows them in order, for example 4, 11, 23, 30, 38, 45. Your result will differ every time. How likely is it that a specific set of six numbers is drawn? The number of different six-number combinations from 49 is 13,983,816, so any one ticket has a 1 in 13,983,816 chance, about 0.0000072%. A random pick is no better or worse than a hand-chosen one, since every combination is equally likely. Picking birthdays, however, means you tend to choose numbers below 32, and if you win, you are more likely to share the prize with someone who picked the same ones.
Is this really random, or just Math.random()?
It uses the Web Crypto API (crypto.getRandomValues), which draws from your operating system's cryptographically secure random number generator. That is the same standard used for encryption keys and is stronger than the Math.random() function that most simple generators rely on. The tool also discards uneven leftover values, so there is no bias toward low numbers.
Can the minimum or maximum be negative?
Yes. Enter any minimum and maximum, positive or negative, as long as the maximum is greater than the minimum. A range of -50 to 50, for example, has 101 possible whole numbers.
What is the most numbers I can generate at once?
Up to 1,000 numbers in one batch. Turn on the sort option to read a long list more easily, and use the copy button to paste the whole list into a spreadsheet or document. The largest values allowed are 9 trillion, and a smaller limit applies when you use decimal places.
Can I generate random decimals?
Yes. Set decimal places from 1 to 4. The result is an evenly spaced grid of values across your range, and each value has the same chance. For more than 4 decimal places, generate whole numbers over a wider range and divide them yourself.
Is this good enough for a real raffle or giveaway?
Yes. The secure random source and unbiased method make it suitable for raffles, giveaways and sampling. For official lotteries or contests with legal requirements, check the rules in your area on approved draw methods, and consider recording the draw so entrants can see it.
Why did I get an error about the range being too small?
This happens when No duplicate numbers is ticked and you asked for more numbers than exist in the range. For example, 10 unique numbers between 1 and 5 is impossible because only 5 values are available. Widen the range, lower the quantity, or untick the option.
Why do I sometimes get the same number twice in a row?
Because each draw is independent, and repeats are a normal part of randomness. With a range of 1 to 6, the next roll matches the previous one 1 time in 6. Tick no duplicates if you need every number in a batch to be different.
Does this tool store or share the numbers I generate?
No. Everything happens in your browser. Numbers are not sent to a server and are not saved after you refresh or close the page.