Showing results in
Beta Still in development. Some things may change. Feedback?

Random Number Generator.

Generate one or more random numbers between any range. Supports unique picks, presets for dice and card decks, and shows the probability behind every result.

✓ Free ✦ No duplicates mode
Random Number Generator
Generate random numbers instantly.
Quick presets
Off
Each number appears once
?
Set your range and hit Generate
Did you know
2³²
Most computers generate random numbers using a pseudorandom algorithm, not true randomness. The same seed always produces the same sequence. True randomness requires physical noise, like radioactive decay or atmospheric static.
Helpful tips
🎲
Use presets for common scenarios
Dice rolls, card draws, and percentages are baked in as one-click presets. No need to set min and max manually every time.
🔀
No duplicates for fair draws
Turn on "No duplicates" when picking raffle winners, assigning tasks, or running a lottery. Each number can only appear once in the results.
📊
Every number has equal probability
This generator uses a uniform distribution. Every integer in your range has an identical chance of being selected. There's no weighting or bias.
🔢
Generate up to 100 at once
Need a full set of random numbers for a sample or simulation? Increase the count to generate up to 100 numbers in a single click.
Quick reference
Dice roll range 1 – 6
Coin flip range 0 – 1
Card deck range 1 – 52
Percentage range 0 – 100
Formula floor(rand × range) + min
Probability 1 ÷ range per number
How the generator works
The short version, for people
who just want the number

Every random number produced here starts with a single call to the browser's built-in random number generator. That function returns a decimal between 0 and 1, which is then scaled and shifted to land inside your chosen range. The formula is floor(random() × range) + minimum, where range is the count of integers from your minimum to your maximum inclusive. The result is always a whole number, and every number in the range has exactly the same chance of appearing.

Computers cannot generate truly random numbers from logic alone. What they produce is called a pseudorandom sequence: a long, unpredictable-looking series of numbers that is actually determined by a starting value called a seed. For everyday use, picking raffle winners, deciding who pays for lunch, or running simulations, this is more than sufficient. For cryptographic or high-security applications, a dedicated source of hardware entropy is used instead.

The no-duplicates mode works differently. Rather than picking independently each time, it builds a pool of every integer in your range and shuffles the entire list using the Fisher-Yates algorithm. It then takes numbers from the front of the shuffled list. This guarantees that no number appears more than once, no matter how many you request.

Formula floor(random() × range) + min
No duplicates Fisher-Yates shuffle, take first n
Probability 1 ÷ range per number, uniform
FAQ
Common questions
Not in the strictest mathematical sense. This tool uses the browser's built-in Math.random() function, which produces pseudorandom numbers. A pseudorandom generator uses a deterministic algorithm seeded with something unpredictable, like the current time or system state, to produce a sequence that passes statistical tests for randomness but is not truly unpredictable at the hardware level. For drawing raffle winners, games, sampling, or simulations, this is entirely appropriate. If you need cryptographic-grade randomness, such as for generating security keys, you would want a dedicated tool built on a hardware entropy source.
When no-duplicates mode is on, the generator creates a list of every integer in your range and shuffles it using the Fisher-Yates algorithm, which guarantees a perfectly uniform shuffle with no bias. It then picks from the front of that shuffled list. The result is a set of numbers where each one appears exactly once, equivalent to drawing from a bag without replacement. If you ask for more numbers than the range contains, the count is automatically capped at the size of the range. This mode is ideal for lotteries, random team assignments, or any situation where repetition would be unfair.
Yes, unless no-duplicates mode is on. Each number is generated independently, so any value in the range has an equal chance every single time regardless of what came before. Getting the same number twice in a row is not a sign that something is broken. Over a large number of trials it would be unusual, but for a small number of results it is entirely normal. This is a property of uniform random distributions: past results have no influence on future ones. If you need to guarantee no repetition within a single batch, enable the no-duplicates toggle before generating.
The range is calculated as maximum minus minimum plus one, which counts how many integers are in your chosen range inclusive of both endpoints. The probability of any single number being picked is 1 divided by the range. For a range of 1 to 6, that is 1 in 6, or about 16.67%. For a range of 1 to 1,000, it is 0.1%. This is a uniform distribution, meaning every number has an equal probability with no number weighted more or less than any other. The breakdown section below the result shows the exact probability for your specific inputs after each generation.
Yes. Set your minimum to 1 and your maximum to the number of entries, turn on no-duplicates mode, then set the count to however many winners you need. Each winner will receive a unique number with no repeats. For example, a raffle with 200 entries and 3 prizes would use a range of 1 to 200, count of 3, with no-duplicates on. The generator is fair and unbiased for this purpose. If the draw needs to be witnessed or independently verified, consider screensharing or recording the generation as evidence of the result.
The tool supports up to 100 numbers per generation. This covers the vast majority of practical uses including lotteries, team draws, sample sets, and simulations. There is no limit on the range itself: you can set your minimum and maximum to any integers the browser can handle, which in practice means values up to several quadrillion. If you need to generate thousands of numbers at once for statistical modelling or data science work, a scripting environment like Python or R would be more suitable, where you can also set a reproducible seed for repeatable results.