This tool generates random integers between a minimum and maximum value, using the browser's cryptographically secure random number generator (crypto.getRandomValues) rather than Math.random() — nothing is sent to a server, and nothing is stored.
Turn on no duplicates to draw unique values only, useful for things like raffle picks or shuffled selections. It's disabled by default, which allows the same number to come up more than once, like rolling several dice.
How is this different from Math.random()?
This tool uses the Web Crypto API's crypto.getRandomValues, a cryptographically secure random source, with rejection sampling to avoid the modulo bias that a naive Math.random() % range calculation introduces.
Can I generate numbers without duplicates?
Yes — toggle "no duplicates" to sample without replacement, useful for things like raffle drawings or shuffled ID assignment; note the requested count cannot exceed the size of the range in that mode.
Is this suitable for a lottery or drawing?
The randomness source is cryptographically strong, but always check your jurisdiction's rules — many regulated drawings require a certified/audited RNG, not just a strong one.