—
Uses crypto.getRandomValues() — cryptographically secure randomness
True randomness is harder to achieve computationally than it appears. Standard programming language random functions use pseudo-random number generators that produce deterministic sequences — given the same seed, they repeat. Cryptographic randomness draws from physical entropy sources in the operating system, making the output statistically unpredictable. This matters for lotteries, sampling, security tokens, and any scenario where a predictable sequence would be exploitable or unfair.
The generator calls crypto.getRandomValues() to fill a typed array with cryptographically random bytes. To produce a number in a specific range [min, max], it uses rejection sampling: generate a random value modulo the range size, and if the result would fall in the biased tail (where 2^32 is not evenly divisible by the range), discard it and try again. This guarantees a uniform distribution with no favored values.
For unique number lists, the generator uses a Fisher-Yates shuffle on the target range — an algorithm that produces a perfectly uniform random permutation in O(n) time. For custom set randomization, the same shuffle is applied to the entered items.
Generation history is stored in component state for the current session, allowing you to review previous results without regenerating.
A teacher assigning random seat numbers to 30 students at the start of an exam to prevent coordinated seating.
A developer generating a cryptographically random 8-digit verification code for an OTP system mockup during local development.
A startup running a social media giveaway and picking 3 unique winners from a list of 247 comment entries using the Custom Set mode.
A board game group rolling a virtual die for a game that does not have physical dice, generating fair results that everyone can see simultaneously.
A statistician drawing a random sample of 50 IDs from a population of 5,000 for a survey, using the unique-numbers list mode.
Scope note: The generator operates on integers only — floating-point random numbers in a range (e.g., 0.0 to 1.0) are not directly supported. For lists larger than 10,000 unique numbers, generation may take a noticeable moment; the UI remains responsive due to synchronous processing. Generated results are not reproducible (no seed control) by design.
Choose Single Number, Multiple Numbers, or Custom Set mode
Set your range or enter your custom values
Click Generate to get cryptographically random results
Copy results to clipboard with one click
View generation history in the history panel
Task trackers, project planners, and automation scripts that save hours every week. Starting at $4.
Browse Productivity Kits