Random Number Generator — Free & Truly Random

Generate random numbers in any range, with or without repeats.

🔒 Runs in your browser — files never uploaded ⚡ No signup 💯 Free

Generate one number or a thousand, in any range you like, with optional no-repeat drawing and sorting. Presets cover dice, coin flips and lottery draws.

Numbers come from your browser's cryptographic random source by default — the same one used for encryption keys — so the distribution is genuinely uniform.

How to use Random Number Generator

  1. Set your minimum and maximum.
  2. Choose how many numbers you need.
  3. Tick “no repeats” for a draw where each number can only come out once.
  4. Click Generate. Recent results are kept below.

Cryptographic vs pseudo-random

The default uses crypto.getRandomValues(), seeded from genuine system entropy. The alternative, Math.random(), is a deterministic algorithm — fast, fine for animations and shuffling a playlist, but its output is predictable from prior values and it must never be used where the result has value.

There is a second, subtler issue this tool avoids. The obvious way to get a number in a range is to take a random value modulo the range size. Unless the range divides evenly into the source, that makes some numbers more likely than others — a real bias, not a theoretical one. We use rejection sampling instead: draw again if the value falls in the uneven tail. It costs an occasional extra draw and gives a genuinely uniform result.

Drawing without replacement

With "no repeats" on, each number can only appear once — the behaviour you want for a raffle or a lottery draw. The tool uses a partial Fisher–Yates shuffle, which stays fast even when picking 6 numbers from a range of several million.

Is this suitable for a prize draw?

For an informal giveaway, yes — the randomness is sound and the source is your own device. For anything legally regulated, gambling-related, or where a losing entrant might reasonably demand proof, you need an auditable system that produces a verifiable record. No browser tool can give you that, because nothing here is logged.

Frequently asked questions

Are these numbers really random?

They come from crypto.getRandomValues(), seeded from genuine system entropy — the same source used for encryption keys, not the predictable Math.random(). We also use rejection sampling so no number is more likely than another.

Can I use this for a prize draw?

For an informal giveaway, yes. For anything legally regulated or where a losing entrant might demand proof, you need an auditable system that produces a verifiable record — no browser tool can provide that, because nothing here is logged.

What does "no repeats" do?

It draws without replacement, so each number can only appear once — what you want for a raffle or lottery. You cannot request more unique numbers than the range contains.

What is modulo bias?

Taking a random value modulo a range size makes some outcomes more likely whenever the range does not divide evenly into the source. It is a real, measurable bias. We avoid it with rejection sampling — drawing again when a value falls in the uneven tail.