How to Use
Set the minimum value for your range.
Set the maximum value for your range.
Choose how many numbers to generate.
Decide whether duplicates are allowed, then click Generate and read the results instantly.
What Is This Tool?
A random number generator produces unpredictable numbers within a range you define - useful for raffles, statistical sampling, research, gaming, and teaching probability. There is an important distinction between pseudorandom (algorithmic, deterministic with a seed) and cryptographically random (uses system entropy, suitable for security). This tool uses the browser's crypto.getRandomValues() for true randomness - not the weaker Math.random(). Use cases include picking lottery numbers, assigning random IDs, generating test data, and selecting students or participants in classroom settings. The range is inclusive at both ends, so a range of 1 to 10 can return 1 or 10, and you can ask for a single value or a batch of up to a thousand at once.
Why It Matters
Humans are terrible at generating random numbers manually - we unconsciously avoid sequences, prefer certain digits, and show repeating patterns. A random number generator eliminates this bias completely. For raffles and contests, using a verifiable random number generator adds credibility and fairness, and the result can be shared or screenshotted to prove the selection was not manipulated. In research and testing, a documented range and method also makes a sampling step reproducible when someone reviews the work later.
Pseudorandom vs. cryptographic randomness
A pseudorandom generator starts from a seed value and runs a formula that produces numbers which look random but are fully determined by that seed. Give it the same seed and you get the same sequence - useful for reproducible simulations, bad for anything an adversary might try to predict. A cryptographic generator, which is what crypto.getRandomValues() exposes, draws from entropy the operating system collects from hardware events, so the output cannot be reproduced or predicted. For a classroom draw or a giveaway either is fine in practice; for security tokens, passwords, or shuffling a deck in a real-money game, only the cryptographic kind is acceptable.
Drawing without repeats
Turn off 'allow duplicates' when every result must be distinct - picking five raffle positions, assigning unique jersey numbers, or sampling rows without replacement. The generator then draws from the remaining pool each time, so a value already chosen cannot come up again. This only works when the count you ask for is no larger than the size of the range: you cannot draw six unique numbers from a range of four. With duplicates allowed, each draw is independent and the same number can appear more than once, which is the correct behaviour for things like simulated dice.
Running a verifiable draw
Before generating, write down the range and how it maps to entries - for example, 'numbers 1 to 500, matched to row order in the signup sheet'. Generate once, screenshot the result together with that mapping, and publish both. Anyone can then check that the winning number corresponds to the entry you announced. Re-rolling until you get a result you like, or changing the mapping after the fact, is the failure mode that makes people distrust online draws.