People ask whether a yes/no wheel is really 50/50, and the evidence they usually offer is a streak: it said No four times in a row, so it must be rigged. A streak cannot settle that. Only a very large count can. So we ran the exact selection code behind WheelMigo ten million times on a two-segment Yes/No wheel and looked at what came out.
How we tested
WheelMigo picks its result with a function called randomInt, which draws a 32-bit number from the browser's crypto.getRandomValues and throws away the small range that would not divide evenly (rejection sampling). For two entries nothing is ever thrown away, because 2 to the power 32 divides evenly by 2. The wheel then turns so it stops on the segment that was already chosen. We called randomInt(2) 10,000,000 times, counted Yes and No, and kept the whole sequence to study streaks. The script is in the project as scripts/fairness-yes-no.mjs, and results change slightly on every run because the source is cryptographic.
The split: as close to 50/50 as ten million spins can show
| Result | Spins | Share |
|---|---|---|
| Yes | 5,000,660 | 50.007% |
| No | 4,999,340 | 49.993% |
| Gap from 50/50 | 1,320 spins | 0.007 points |
Noise is expected. With 10,000,000 fair spins the Yes count typically lands within about 1,581 of the half-way mark (one standard deviation, the square root of 10,000,000 times a quarter). Our gap was 1,320 spins from the middle, or 0.42 standard deviations, and the chi-square statistic was 0.17 (p about 0.68). That is what a fair source looks like: not exactly 5,000,000, but not distinguishable from it either.
Streaks: they look suspicious and are normal
A fair coin makes the same call several times in a row far more often than people expect. We counted runs of the same answer in the 10,000,000 spins and compared them with what a fair coin predicts.
| Run of the same answer, at least | Observed | Expected from a fair coin |
|---|---|---|
| 5 in a row | 312,608 | 312,500 |
| 10 in a row | 9,672 | 9,766 |
| 15 in a row | 334 | 305 |
| 20 in a row | 14 | 10 |
The longest run was 24 in a row. For ten million fair spins the longest run is typically around 23, because it grows with the base-2 logarithm of the number of spins. So a wheel that says Yes ten times running is not broken; across enough spins it is certain to happen.
The wheel has no memory
The gambler's fallacy is the belief that after a streak the other answer is 'due'. We tested that directly: every time the last five answers were identical (624,723 times), we looked at the next one. It matched the streak 312,115 times, which is 49.96%. A streak does not change the next spin. The odds are 50/50 each time, so if you have just seen five Yes in a row, the next is still a coin flip.
Short runs look lopsided
Most real decisions use a handful of spins, and small samples are uneven. We split the sequence into 1,000,000 blocks of ten spins and counted how many Yes each block had.
| Yes in ten spins | Observed | Exact for a fair coin |
|---|---|---|
| Exactly 5 | 24.59% | 24.61% |
| 6 or 4 | 40.93% | 41.02% |
| 7 or 3 | 23.53% | 23.44% |
| 8, 9 or 10 (or 2, 1, 0) | 10.95% | 10.94% |
| All ten the same | 0.195% | 0.195% |
A 5–5 split is only about one block in four. Roughly one block in nine is 8–2 or more lopsided, and about one in 500 is ten of the same. If you spin ten times and get 7–3, you have seen the ordinary behaviour of a fair coin, not evidence of a bias. Even over 100 spins, 3.47% of blocks fell outside 40 to 60 Yes, against 3.52% by exact calculation.
How to tell a biased wheel from a lucky batch
A fair picker still looks wrong occasionally, and that is part of how the statistics work. We ran 200 independent batches of 1,000,000 spins (200,000,000 spins in all) and computed the same chi-square statistic for each. Its average was 0.99, where a fair source averages 1.00. Seven batches (3.5%) went above 3.84, the usual 5% cut-off; about ten would be expected by chance. So a single batch that fails the test once in twenty is not proof of bias. A real bias shows up in every batch, not in one.
When 50/50 is not true
Yes/No at 50/50 holds because there are exactly two equal entries. Change the list and the odds change. Add a third entry, Maybe, and each answer has a one-in-three chance; add Yes twice and Yes has two chances in three. WheelMigo shows the odds for the current list under the wheel, so you can check what you are about to spin.
The quality of the random source matters when the list is not a power of two. A common shortcut takes one random byte and divides by the number of entries. A byte has 256 values, so with two entries it is exactly even, but with three it gives 86 values to the first entry and 85 to each of the others. By arithmetic that is 33.59% for the first entry and 33.20% for the others, instead of 33.33% each. It is a small gap, but it favours the same entry every time. Our earlier test of a seven-name list measured the same effect at 2.78%.
| Entries | Byte shortcut | WheelMigo |
|---|---|---|
| Yes / No | 50.00% each (256 divides by 2) | 50.00% each |
| Yes / No / Maybe | 33.59% / 33.20% / 33.20% by arithmetic | 33.33% each |
Using a yes/no wheel well
- Decide what each answer will mean before you spin, and commit to it. Spinning again until you get the answer you wanted turns a random decision into a preference.
- Use it for low-stakes either/or choices where the options are close. For decisions that depend on facts, use the facts.
- Do not read patterns into a short run of answers. Ten spins can easily land 7–3.
- If the list has more than two entries, check the odds shown under the wheel.
For more on how the wheel picks, see how WheelMigo picks a name, and for the earlier seven-name measurement, see the random name picker fairness test.