RandomEveryth.ing

How our randomness works

Randomness is only useful if you can trust it. Here is exactly how every result on this site is generated - and how you can check our work.

1. Every result starts with a cryptographic seed

When you click Generate, your browser draws a 128-bit seed from its built-in cryptographically secure random number generator (the Web Crypto API) - the same source used to create encryption keys. This is not the weak Math.random() found in casual tools; it is unpredictable in the strongest practical sense.

How many seeds are possible? A 128-bit seed has 2128 possible values: exactly 340,282,366,920,938,463,463,374,607,431,768,211,456, which is about 3.4 × 1038, or 340 undecillion. If every person on Earth generated a billion results per second, covering all possible seeds would take over a trillion years - so no draw is ever predictable or repeatable by accident.

2. The generation itself is deterministic

From that seed, the selection runs as a pure, repeatable computation. All the unpredictability lives in the seed; the algorithm adds none of its own. This split is what makes results provable: anyone with the seed and the inputs can re-run the exact same generation and must get the exact same result.

3. Unbiased algorithms, continuously tested

Shuffles use the Fisher-Yates algorithm, which makes every ordering exactly equally likely. Range picks use rejection sampling to eliminate modulo bias, the subtle flaw that makes low numbers slightly more likely in naive implementations. Weighted picks follow assigned weights exactly. Our automated test suite runs chi-square statistical tests on every release - if a change introduced bias, the build would fail before it ever reached you.

4. Fairness receipts

Every generation produces a receipt recording the seed, a fingerprint (SHA-256 hash) of the inputs, and a fingerprint of the result. The verify page replays the generation from the receipt and confirms everything matches - proof that the displayed result honestly came from the recorded seed, with nothing edited after the fact.

One honest limitation: a receipt proves a result is genuine, but it cannot prove someone didn't generate several times and share only their favorite. For giveaways, where that guarantee matters, verified server-side drawings with permanent public records are coming soon.

5. See it for yourself

Don't take our word for any of this. Below is the real shuffle algorithm running live on a sample list. Edit the seed - even a single character - and watch every step of the computation change. Restore it and the identical shuffle returns. On the verify page, you can do the same with any real result's receipt: re-run it with its original seed or any other.

First raw outputs of the number stream this seed produces: 0x35807db20x50951e6c0x08a30ae2

Shuffling Alice, Ben, Carmen, Diego, Eve - every step of the actual algorithm:

  1. Start: Alice | Ben | Carmen | Diego | Eve
  2. Step 1: the stream picks position 5 to swap into position 5 Alice | Ben | Carmen | Diego | Eve
  3. Step 2: the stream picks position 1 to swap into position 4 Diego | Ben | Carmen | Alice | Eve
  4. Step 3: the stream picks position 3 to swap into position 3 Diego | Ben | Carmen | Alice | Eve
  5. Step 4: the stream picks position 1 to swap into position 2 Ben | Diego | Carmen | Alice | Eve

Final order: Ben, Diego, Carmen, Alice, Eve

Change even one character of the seed and every draw above changes. Put the seed back and the identical shuffle returns - that repeatability is what makes fairness receipts checkable.

6. Under the hood: the actual algorithms

The number stream (sfc32).The 128-bit seed is split into four numbers that form the generator's internal state. Each time a random number is needed, the state is stirred with additions, bit-shifts, and rotations - fast, thoroughly tested operations that spread each output uniformly - and one 32-bit number falls out. The same starting state always produces the same stream; that's the determinism the receipts rely on. Unpredictability doesn't come from this stream - it comes from the seed itself, drawn fresh each time from your device's cryptographic generator.

Picking in a range without bias (rejection sampling). To pick fairly among, say, 6 options using a 32-bit number, naive code takes the remainder after dividing by 6 - but 232isn't divisible by 6, so a few low values would be very slightly more likely. Instead, we discard the handful of stream values in that uneven tail and draw again. The result: every option has an exactly equal chance, not approximately.

Shuffling (Fisher-Yates).Walk the list from the last position to the second. At each position, pick one of the not-yet-placed items (using the unbiased range pick above) and swap it in. That's the whole algorithm - you can watch it run step by step in the demo above - and it provably gives every possible ordering the same probability. Weighted picks work similarly: each item's chance is its weight divided by the total, re-normalized after each selection when picking without repeats.

7. Your data stays with you

Generators run entirely in your browser. Lists you enter are not uploaded to our servers; saved lists and history live in your browser's local storage. Share links work by encoding your inputs into the URL itself.

8. What randomness is for - and what it isn't

Random tools are excellent for fair selection, variety, and low-stakes decisions. They are not wisdom. We deliberately don't build generators for serious medical, legal, financial, or spiritual decisions, and we'd gently discourage using chance for anything where the answer actually matters to your life. Sponsored or affiliate content on this site never influences random outcomes - that is a permanent commitment.