Generators · randomnessRandom number generator and draw
A random number, a draw from a list, splitting into teams, a random running order, dice and a coin. Cryptographic randomness, a verifiable result — and all of it in the browser.
The participant list, the seed and the results never leave your browser
with a single number there is nothing to repeat or to sort — both switches wake up once you ask for more
Quick range
d4 · d6 · d8four, six and eight faces — the ordinary dice of board games
d10 · d12ten and twelve faces; d10 is often thrown in pairs
d20twenty faces — the main die of D&D and similar systems
d100percentile: a hundred faces, the throw reads as a percentage
The format is a count, the letter d, the number of faces and a modifier: 3d6+2, d20, 2d10-1. The word «coin» flips a coin — «Heads» or «Tails».
Result
Press «Draw» — the result will appear here
A note
This is a tool for draws, games and teaching. It is not meant for gambling or money lotteries.
The runs happen in your browser: the same sampler is exercised and the frequencies compared with theory.
Session history
Empty so far — press «Draw». The history lives in this tab only.
02
A verifiable draw
promise → draw → verification
Draw seed
The field is empty: the draw will use the cryptographic source. That is honest, but such a draw cannot be verified — nobody can reproduce it, you included.
SHA-256 fingerprint · seed + input
—
No draw yet — the fingerprint can be announced right now.
How to verify
01Before the draw
Announce the fingerprint: post this line in the chat or under the post. It depends on the seed and the participant list, so neither can be swapped unnoticed afterwards.
02The draw
Press «Draw». The draw number is appended to the seed, so every press gives a new result — and every one of them is reproducible.
03After
Publish the draw seed together with its number, plus the protocol. The protocol holds everything: mode, input, fingerprint and result.
04Verification
Anyone opens this page, enters the same seed, the same list and the same number — and gets the same result. A match means the draw was not replayed.
03
About randomness
Cryptographic randomness
Basics
crypto.getRandomValues
Numbers come from the browser's cryptographic source rather than Math.random(), whose sequence is predictable once the generator state is known.
No skew
Fairness
rejection sampling
A naive remainder favours the start of the range slightly — in a draw that means the first names win more often. Unsuitable values are discarded so the odds stay strictly equal.
Seed and repeatability
Verification
seed#3 = same result
A draw runs from the seed and the attempt number. Knowing them and the list, anyone repeats the draw and gets the same outcome — verified without trusting us.
A promise before the draw
Protocol
SHA-256 fingerprint
Announce the fingerprint beforehand and the seed afterwards. That shows neither list nor seed was swapped later; competitors need a server for this, here it is the browser.
No repeats
Modes
5 of 36
Already drawn values can be excluded: for lottery sets, a running order, or prizes where one person wins only once.
Privacy
Local
no server
Participants, seed and results stay in the tab. Nothing is sent or stored — the draw history disappears when the page reloads.
04
Frequently asked questions
Set «from» and «to», say how many numbers you need, and switch on «no repeats» if the same number must not come up twice. Bounds may be negative, and the arrows next to a field change the value by one, or by ten with Shift held. The numbers come from the browser's cryptographic source rather than from `Math.random()`.
Paste the participants one per line, say how many to draw, and press «Draw». If the draw may need proving later, announce the fingerprint beforehand and the seed afterwards: anyone can then repeat the draw and get the same result. The «remove the drawn» switch helps when there are several prizes and one person may win only once.
Open the «Dice» mode and type the notation: `d6` is one six-sided die, `2d6` is two, `3d6+2` is three with a bonus added to the sum. `d4`, `d8`, `d10`, `d12`, `d20` and `d100` work the same way — the full tabletop and D&D set. The face of a six-sided die is drawn next to the number, and the word «coin» instead of a notation gives Heads or Tails. A fullscreen view shows the roll to the whole table.
Yes, and it needs no server of ours. The result is fixed by three things: the seed, the draw number and the input. The SHA-256 fingerprint of the seed and the list is announced before the draw — it proves neither was swapped afterwards. Once the seed is published, anyone enters the same data and gets the same outcome.
`Math.random()` is pseudo-random: knowing the generator's state makes the next values predictable. Here `crypto.getRandomValues` is used instead. The second difference matters more: a naive remainder-of-division slightly favours the start of the range, so unsuitable values are discarded and the odds stay strictly equal. You can check that on the page — the «sampling fairness check» runs a hundred thousand draws and reports χ².
No. The list, the seed and the results live only in your browser tab: we neither send nor store them — not on a server and not in browser storage. The draw history disappears when the page reloads, and that is deliberate: keeping other people's participant lists is not something we want to do.