Loading Random Number & List Generator…
Ask for at least one.
The numbers come from the browser’s cryptographic random number generator, not from Math.random, and the remainder is taken with rejection sampling so every value in the range is equally likely. Taking random % 6 directly does not give a fair die: 232 does not divide by six, so the low faces come up fractionally more often. Lists are shuffled with Fisher-Yates, which makes every possible order equally likely.
Fair enough for a prize draw, a running order or a sample. Not a substitute for a supervised, auditable draw where the outcome is legally binding — nobody watching can verify what happened in your browser.
This random generator draws whole numbers or decimals from a range you set, with or without repeats, and returns them in the order they came out or sorted up or down. Paste a list of names instead and it picks from those — a winner, a running order, a sample of ten from a list of four hundred — optionally without drawing anyone twice.
Every draw comes from the browser’s crypto.getRandomValues rather than Math.random. Math.random is a deterministic sequence, and its internal state can be reconstructed from a handful of observed outputs, after which everything it produces next is known. That is perfectly acceptable for placeholder text or a shuffled demo, and wrong for anything with a stake attached to the outcome.
Turning random bits into a number in a range is where the second mistake lives. Taking the remainder directly — a 32-bit value modulo 6 — is not a fair die, because 2^32 is not divisible by 6 and the low faces therefore come up fractionally more often than the high ones. This tool uses rejection sampling instead: the tail that does not divide evenly is thrown away and a fresh value drawn.
Lists are shuffled with the Fisher-Yates shuffle, which makes every possible ordering equally likely. Sorting by a random comparator, the shortcut most people reach for first, does not.
Six hundred thousand draws of a six-sided die came out at 16.60%, 16.71%, 16.69%, 16.69%, 16.71% and 16.60% across the six faces. A fair die is 16.67% each, so that is even to within the noise you would expect from 600,000 trials.
Asking for 6 different numbers between 1 and 49, sorted lowest first, returned 10, 18, 40, 43, 44, 45. Asking for 9 different numbers between 1 and 5 returns an explanation rather than a result, because there are only five numbers to draw from and no amount of drawing produces a ninth.
Drawing many unique numbers by retrying until an unused one turns up takes an unbounded time as the pool empties. Once the quantity requested is a large share of the range, the generator shuffles the range itself and takes from the front, which finishes in a predictable time.
Ranges are capped at what JavaScript can count exactly, up to 9,007,199,254,740,991. A wider range is refused rather than quietly losing values, which is the alternative once consecutive whole numbers stop being distinguishable.
This is fair enough for a prize draw among colleagues, a running order, a seating plan or a sample for a survey. It is not a substitute for a supervised, auditable draw where the outcome is legally binding — nobody watching can verify what happened inside your browser, and a screenshot says nothing about how many times the button was pressed before that one. Where a result has to be defensible to whoever did not win, draw it in front of witnesses instead.
For an informal one, yes. For a draw carrying legal weight, no — not because the numbers are poor, but because nothing done privately in a browser can be verified afterwards.
Because a draw without repeats cannot be longer than the range it draws from. Five numbers exist, so five is the most available. Allow repeats and nine is fine, duplicates included.
Nothing, for anything cosmetic. Its weakness is that the output follows from an internal state which can be recovered by watching enough values, after which the next draw is predictable.
No. The draw is not seeded, so there is no number you could enter to reproduce it and no history to search. Copy anything worth keeping before leaving the page.