How PickSpin picks fairly

Two details decide whether a random picker is actually fair: where its randomness comes from, and how that randomness is turned into "slice 4 of 7". Here is what PickSpin does, with demos you can poke at.

1. A secure source of randomness

Every tool on this site gets its randomness from crypto.getRandomValues, a Web Crypto function built into every modern browser. It is a cryptographically secure generator that your operating system seeds from hardware noise, the same source used to make encryption keys. Its output can't be predicted from past results, unlike the everyday Math.random(), whose internal state can in principle be recovered from a handful of outputs.

2. Turning random bits into a fair pick

The generator hands back whole numbers from 0 up to 4,294,967,295 (232 − 1). To choose one of n options, the obvious move is to take the remainder after dividing by n. That is subtly unfair whenever n doesn't divide the range evenly: the leftover values at the top all land on the first few options, which get a slightly bigger share. It's called modulo bias.

With 232 values the bias is tiny but real. It's much easier to see with a toy generator that only makes the numbers 0 to 7. Change the number of options and compare:

Options on the wheel
0→ option 1
1→ option 2
2→ option 3
3→ option 1
4→ option 2
5→ option 3
6redraw
7redraw

Remainder only

  • Option 13/8
  • Option 23/8
  • Option 32/8

Rejection sampling

  • Option 12/6
  • Option 22/6
  • Option 32/6

With 3 options, the remainder method gives options 1–2 3 chances in 8 but the rest only 2. Rejection sampling throws away values 6–7 and draws again, so every option gets exactly 2 of the 6 values it keeps.

PickSpin does the same thing with the full 32-bit range: it finds the largest multiple of n below 232 and redraws on the rare occasions a value lands above it. For a 7-slice wheel that happens about once in a billion draws, so it costs nothing and removes the bias completely. Shuffles (for teams and multi-name draws) use the Fisher–Yates algorithm built on the same unbiased function, so every ordering is equally likely.

We test it, too: the site's test suite draws hundreds of thousands of values and runs a chi-square goodness-of-fit test on every function, including shuffles and no-repeat draws.

3. The wheel lands where the draw says

Many spinner sites run a physics animation and read off whichever slice ends up under the pointer. That ties fairness to the animation code, the frame rate of your device and rounding in slice boundaries. PickSpin reverses the order. Step through it:

  1. Press Spin
  2. Draw the winner
  3. Plan the spin
  4. Animate
  5. Reveal
AnaBenCyDeeEliFay

The wheel is at rest. Nothing has been decided yet.

The same pattern runs through the whole site: the coin's face, each die, the computer's rock-paper-scissors throw and every drawn name are decided first, and the flicker or tumble you see is played afterwards. Plenty of “obvious” explanations hide a catch, just as the remainder trick does; the Moon’s phases are a classic case, and ahaboo has a narrated explainer on why they really happen.

What fair does not mean

Fair means every option has the same chance on every spin. It doesn't mean results take turns. The same name can come up twice in a row, and over a short run some options won't come up at all. If you need everyone to get exactly one turn, use "Remove each winner" on the wheel or hat mode in the name picker. To see how streaky real randomness is, try the streak simulator on the coin flip page.

PickSpin is for classroom picks, games and everyday choices. It isn't a certified random number generator for lotteries or regulated prize draws.

Questions people ask

Does PickSpin use Math.random()?

No. Every tool uses crypto.getRandomValues, the browser's cryptographically secure generator, together with rejection sampling to map values into a range without bias.

Is the result decided before the wheel stops?

Yes, deliberately. The winner is drawn the instant you press Spin, and the animation is calculated to finish on it. That way the animation, your device's speed or a dropped frame can never tilt the result.

Can PickSpin see or change my results?

No. Spins, flips, rolls and draws all happen in your browser, and none of them are sent to a server. The only feature that contacts a server is the optional AI option suggester, and it never chooses a winner.

Can I verify the fairness myself?

Flip 100 coins or roll 1,000 pairs of dice on the coin and dice pages and compare the counts with the expected values shown. The source for the random functions is short and uses only standard browser APIs.

More ways to pick