Random Number Generator (1–100 or Any Range, No Repeats)

Generate cryptographically random integers or decimals in bulk, with a no-repeat mode.

Every integer or decimal this tool produces is drawn from window.crypto.getRandomValues rather than Math.random, using the same rejection-sampling technique as the password generator to eliminate the low-order bias a plain modulo would introduce — this one genuinely is a cryptographically secure random number generator, not an approximation of one. Batches can require no repeats within a range, and the configuration is validated up front so an impossible request fails with a clear message instead of returning something silently wrong or incomplete.

How to pick a random number

  1. Type the lowest and highest values you want into Minimum and Maximum; the page opens at 1 and 100, and both ends are included.
  2. Choose Integer for whole numbers, or Decimal and drag the Decimal places slider from 0 to 6.
  3. Set Batch size to how many numbers you want and tick No repeats if every value must be different.
  4. Press Generate, then Copy all to put the results on your clipboard, one number per line.

Rejection sampling over crypto-strength bytes

Drawing just enough random bytes to cover the requested range and then taking that value modulo the range size looks fine until the range doesn't evenly divide the byte-space, at which point the low end of the range gets picked very slightly more often. The generator avoids that by computing the largest multiple of the range that fits the byte-space it drew, and re-drawing whenever the sampled value lands past that cutoff — so every integer in the requested range is equally likely, exactly, not approximately.

No-repeats mode uses Floyd's algorithm, not a full shuffle

Requesting unique values within a range doesn't build and shuffle the entire range in memory — instead it uses Floyd's algorithm for sampling without replacement, which runs in time and space proportional only to how many values you asked for, regardless of how wide the range is. Asking for five unique numbers out of a billion-wide range never allocates anything close to a billion-element array; it does a small, fixed amount of work no matter how large the range gets.

Decimals are generated on a scaled integer domain, not rounded after the fact

Rather than drawing a raw floating-point value and rounding it to your chosen precision afterward — which can introduce stray rounding artifacts — decimal mode multiplies the range by ten to the power of the requested precision, draws an integer over that scaled range using the exact same unbiased machinery as whole-number generation, and divides back down. The result never carries floating-point noise beyond the digit count you asked for, because the precision boundary is baked into the sampling itself rather than applied as a display-only rounding step.

Uniqueness is enforced by range size, not fudged

Asking for more unique values than actually exist in a range — whether that's whole numbers between two close integers, or distinct values at a given decimal precision within a narrow span — throws a clear error explaining exactly how many distinct values exist, rather than silently returning fewer results than requested or looping indefinitely trying to satisfy an impossible ask.

It's also worth being clear about what this tool doesn't do: every value in the configured range has exactly equal probability of being drawn. There's no way to weight the outcome toward or away from particular numbers, so it isn't a substitute for a weighted lottery, a loaded die simulation, or anything needing a non-uniform distribution.

True random, pseudo-random and cryptographic numbers

Most programming languages ship a fast pseudo-random generator such as JavaScript's Math.random: a formula that spreads values evenly but is not designed to resist prediction, which is fine for shuffling a playlist or a game animation. A cryptographically secure generator, which is what this page uses through window.crypto.getRandomValues, is seeded by the operating system from hardware and system events and built so that past outputs give no useful hint about the next one.

Services like RANDOM.ORG go one step further and derive numbers from a physical process, atmospheric noise in their case. For classroom picks, games, sampling and informal giveaways, a crypto-grade generator is already far beyond what the task needs; the practical difference a physical source adds is a third-party record of the draw, not better unpredictability for everyday use.

Common uses for a random number picker

Questions people ask about Random Number Generator

Is this number generator actually cryptographically random, or just good enough for casual use?
It's genuinely cryptographically secure. Every draw comes from window.crypto.getRandomValues(), your browser's CSPRNG, using rejection sampling to eliminate the bias a plain modulo operation would introduce, with no fallback to Math.random() anywhere in either the integer or decimal generation path.
Why did requesting unique numbers throw an error instead of just giving me fewer results?
The tool validates up front whether the requested count of unique values can actually exist within your range and precision. If it can't — for example asking for twenty unique whole numbers between 1 and 10 — it throws a clear error explaining exactly how many distinct values are available, rather than silently returning a shorter, unexplained batch.
Can I generate decimals with more than six digits after the decimal point?
No, decimal precision is capped at six places. That ceiling keeps the internal scaled-integer approach — which multiplies your range by ten to that power before sampling — working within safe numeric bounds rather than risking floating-point precision loss at the extreme end.
Does no-repeats mode work the same way for decimals as it does for whole numbers?
Yes — both treat the requested range as a finite set of distinct values (whole numbers for integer mode, or values spaced by the chosen precision for decimal mode) and sample from that finite set without replacement using the same underlying algorithm, so both modes reject an impossible unique-value request rather than hanging or returning too few results.
How do I generate a random number between 1 and 100?
Leave Minimum at 1 and Maximum at 100, which is how the page opens, set Batch size to 1, keep Integer mode selected and press Generate. Every whole number from 1 to 100, including both ends, has exactly the same chance of being picked.
Is this as random as RANDOM.ORG?
For practical purposes the unpredictability is comparable: the browser's cryptographic generator is built so results can't be predicted. RANDOM.ORG uses atmospheric noise and can keep a public record of a draw, which this page doesn't; nothing here is logged or published.
Can I use it to pick raffle or giveaway winners?
Yes. Number your entries, enter 1 and the entry count as the range, tick No repeats and set the batch size to the number of winners. Keep in mind the draw isn't recorded anywhere, so if your rules require proof, screen-record the draw or take a screenshot.
How many numbers can I generate at once?
The Batch size field has no fixed upper limit; any whole number from 1 upward is accepted. With No repeats on, the count can't exceed the distinct values in your range. Every result is shown as its own tile, so very large batches take your device longer to draw on screen.

Related tools on BrakeTools

Content reviewed 2026-09-27.