Is the wheel random? We spun it 1,000,000 times

A transparent test of Wheelova's spin code: the results, the statistics, and the raw data so you can check our work.

Short answer: yes. Across 3,000,000 simulated spins on 2, 6 and 10-entry wheels, every entry won almost exactly as often as chance predicts, no result made the next one more or less likely, and streaks appeared at the rate probability says they should. All three wheels passed the standard chi-square test. The method, the code and the raw spin data are below.

3,000,000spins tested
0.657%largest gap from expected (10-entry wheel)
10.02%chance of the same result twice (10 entries; expected 10%)
3 / 3wheels passed the chi-square test

What we tested

When you press Spin, Wheelova asks your browser's crypto.getRandomValues() for a random number. That number decides how far past six full turns the wheel travels, and the winner is whichever slice stops under the pointer. According to MDN Web Docs, browsers implement this function as a cryptographically secure pseudo-random generator.

We copied that spin math exactly from the live site's code, including how the wheel's resting position carries over from one spin to the next, and ran it 1,000,000 times each on three wheels: 2 entries (like a yes or no wheel), 6 entries (like a die) and 10 entries (like a class name picker). The test ran in Node.js 22, which provides the same Web Crypto getRandomValues() function as browsers.

Result 1: every entry wins equally often

On the 10-entry wheel, each entry should win 100,000 times out of 1,000,000. The real counts ranged from 99,417 to 100,657, all within 0.657% of the expected number.

-1.0%-0.5%0+0.5%+1.0%Entry 1: 100,118 wins (+0.12%)1Entry 2: 100,657 wins (+0.66%)2Entry 3: 99,417 wins (-0.58%)3Entry 4: 99,789 wins (-0.21%)4Entry 5: 99,652 wins (-0.35%)5Entry 6: 100,562 wins (+0.56%)6Entry 7: 100,170 wins (+0.17%)7Entry 8: 99,464 wins (-0.54%)8Entry 9: 100,136 wins (+0.14%)9Entry 10: 100,035 wins (+0.03%)10Entry numbershaded: normal variation (±0.60%)
10-entry wheel, 1,000,000 spins: how far each entry's win count is from the expected 100,000. Hover a bar for the exact count.

Perfectly equal counts would actually be suspicious: real randomness always wobbles a little. The shaded band shows the range where about 95% of entries land by chance alone. One entry sits just outside it, which is expected: with 10 entries, at least one lands outside a 95% band about 40% of the time. The chi-square test below checks all entries together, which is the fair way to judge.

Exact win counts for the 10-entry wheel
EntryWinsvs expected
Entry 1100,118+0.12%
Entry 2100,657+0.66%
Entry 399,417-0.58%
Entry 499,789-0.21%
Entry 599,652-0.35%
Entry 6100,562+0.56%
Entry 7100,170+0.17%
Entry 899,464-0.54%
Entry 9100,136+0.14%
Entry 10100,035+0.03%

Result 2: the chi-square test passes on every wheel

The chi-square goodness-of-fit test measures whether a set of counts differs from equal by more than chance would explain. A p-value above 0.05 means no evidence of bias. All three wheels passed.

WheelSpinsExpected per entryActual rangeChi-squarep-valueResult
2 entries1,000,000500,000499,629 – 500,3710.55 (df 1)0.458Pass
6 entries1,000,000166,666165,897 – 167,4429.06 (df 5)0.107Pass
10 entries1,000,000100,00099,417 – 100,65716.03 (df 9)0.066Pass

A p-value is not a "randomness score": values anywhere between 0.05 and 1 are normal for a fair wheel, and running the test again gives a different value each time.

Result 3: the last spin doesn't affect the next

A fair wheel has no memory. We counted every pair of back-to-back results (which entry followed which) and tested whether any pairing came up more than chance allows. None did: the 10-entry wheel scored p = 0.674, the 6-entry wheel p = 0.55 and the 2-entry wheel p = 0.391.

The same result came up twice in a row 10.02% of the time with 10 entries (expected 10%), 16.64% with 6 entries (expected 16.67%) and 49.96% with 2 entries (expected 50%).

Result 4: streaks happen exactly as often as they should

People often think a wheel is rigged when it lands on the same answer several times in a row. On a 50/50 wheel, long streaks are a normal part of randomness. Here is what 1,000,000 spins of a 2-entry wheel produced, against what probability predicts:

Streak of the same resultTimes it happenedExpected by probability
5 or more in a row31,199about 31,250
10 or more in a row944about 977
15 or more in a row27about 31
Longest streak19typically around 19–20 in a million spins

So if your yes or no wheel says "Yes" five times running, that is not a glitch. It happens about once every 16 attempts at a fresh streak.

What this test does not show

  • It tests the spin logic, not your screen. We ran the same code and random source the wheel uses, without drawing the animation. The animation only displays a result that has already been decided by the random number.
  • It does not stop people from rigging the list. Typing an entry twice gives it two slices and twice the chance. For public draws, show the full list before you spin. See our FAQ on fairness.
  • It is not a certification. Wheelova is built for classrooms, games, giveaways and decisions. It is not a certified lottery or gambling system.
  • Results vary run to run. Running the test again gives slightly different counts and p-values. That is what randomness looks like.

Check it yourself

You don't have to take our word for it. Download the test script and run it with Node.js 18 or newer, or analyse our raw results in any spreadsheet or statistics tool.

You may use the charts and figures on this page with a credit link to this page.

Try the wheels

Put the results to work: the Yes or No Wheel (the 2-entry case), the Name Picker Wheel for classrooms, or the Raffle Wheel for giveaways.