Generator Grove

Random Number Generator

Pick a range, choose how many numbers you need, generate. Type anything into the seed box and the same draw comes back — for you, and for anyone you send the link to.

The seed box is the reason this page exists

Every free generator hands you numbers. Almost none of them let you get the same numbers back. Put a word, a date or a phrase in the seed box and the draw becomes deterministic: that seed plus those settings always produce that result, on any machine. Copy link packs the seed and every setting into a URL, so whoever opens it sees the identical numbers rather than a screenshot they have to take your word for.

That turns an informal draw into something a sceptical participant can check. The usual pattern is commit-and-reveal: announce in advance what the seed will be — a hash of the entrant list, next Friday's closing index, the date of the stream — then draw in public and let anyone re-run it. The honest limit is that this page timestamps nothing. If you choose the seed after seeing the outcome, you can quietly try seeds until you like the winner. Reproducibility only becomes fairness when the seed is fixed publicly first.

Where the numbers actually come from

With the seed box empty, every number comes from crypto.getRandomValues, the browser's cryptographically secure generator, which draws from the operating system's entropy pool. The page takes 53 random bits at a time — the widest range of whole numbers JavaScript holds without losing precision — and reduces them into your range using rejection sampling. Taking the remainder directly would slightly favour the low end of the range whenever the range does not divide evenly into the number of possible bit patterns, so draws landing in that uneven tail are thrown away and re-drawn. The skew is small at everyday range sizes and costs nothing to remove, so it is removed. If a browser has no crypto.getRandomValues, the unseeded mode reports an error instead of silently dropping back to Math.random.

With a seed, the source switches to mulberry32, a compact 32-bit generator keyed by a 32-bit FNV-1a hash of your seed's character codes. It is deterministic and fast, and it is not secure: its entire state is 32 bits, so all four billion possibilities can be tried in bulk and the rest of the sequence predicted from a single output. Use it for reproducibility, never where somebody profits from guessing what comes next. The same 32-bit ceiling means two different seed phrases can occasionally hash to the same state and give identical draws.

The no-repeats settings do not draw and retry. They run a partial Fisher–Yates shuffle across the range using a sparse map of the positions actually touched, so six unique numbers out of 1–49 and six out of 1–1,000,000,000 cost the same and neither one builds the range in memory.

Frequently asked questions

Can I use this for a raffle, lottery or anything legally auditable?

For a giveaway among friends or a classroom draw, yes — and seed mode with the seed announced beforehand is better evidence than most alternatives offer. For anything regulated, or with real money attached, no. There is no independent log, no timestamp and no witness, so nothing proves the draw was not re-run until the result suited the organiser. Licensed prize draws generally require certified hardware or a supervised process, and neither is something a web page can provide.

Why do repeats show up when I allow them?

Because independent draws are meant to repeat. Five numbers taken from 1 to 100 with repeats allowed contain at least one duplicate roughly 9.6% of the time, about one run in ten. It reads as a bug, but a generator that never repeated would be the biased one — it would have to remember what it had already produced. Switch to no-repeats when you want lottery-style behaviour.

How do the decimal places work?

The range is multiplied by ten to the power of the number of places, a whole number is drawn uniformly across that widened range, and the result is divided back down. Every value with that many decimals is equally likely — 3.14 is no more or less probable than 3.10. A very wide range at four decimal places can exceed the exact-integer limit, and the tool refuses rather than quietly losing precision.

Will the same seed give the same numbers next year?

The generator is defined by the code on this page, not by your browser, so today the same seed and settings reproduce the same numbers everywhere. The caveat is real: if this page's generator is ever changed, old seeds will produce different output. If a draw has to be checkable years from now, save the numbers, not just the seed.

Limits worth knowing

Draws are uniform only — every value in the range is equally likely. There is no weighting, no normal or exponential distribution, and no exclusion list, so if you need dice-style sums or a bell curve this is the wrong tool. Sets are drawn independently of each other unless you choose no repeats across all sets. Everything runs in the page itself: nothing is uploaded, no request is made when you press generate, and the tool keeps working if your connection drops after the page loads.