Pick truly random numbers in any range — one number or many, with or without duplicates. Perfect for giveaways, games, sampling, and decisions.
Numbers are drawn with the browser's cryptographically secure random source (crypto.getRandomValues), the same generator used for encryption keys. Every value in your range has exactly equal probability, and the implementation avoids the subtle modulo bias that skews naive generators toward lower numbers.
With unique mode on, numbers are drawn like lottery balls — each can appear only once. With it off, every draw is independent, so repeats are possible (and expected: in 25 draws from 1-100, there's about a 95% chance of at least one repeat).
Genuinely random sequences contain streaks and clusters — three 7s in a row is perfectly normal, even though it doesn't "feel" random. If results looked evenly spread with no repeats, that would actually be evidence of a biased generator. This is the same gambler's-fallacy intuition that makes people believe a coin is "due" for heads. Each draw here is independent and memoryless.
Need a random string instead of a number? Use our password generator.
This tool uses your browser's cryptographically secure random source (Web Crypto API) to pick numbers with equal probability across your chosen range — better quality randomness than Math.random().
Yes. Enable "unique numbers" to draw without repeats, like a lottery. The range must contain at least as many values as the count you request.
Yes. Each number from 1 to 100 has exactly a 1% chance of being selected on every draw, and previous draws don't influence future ones (unless unique mode is on).
Yes — set the minimum to any negative integer, for example -50 to 50. Both endpoints are always included in the possible results.