Random Duck Race Play now
Prove it yourself

Is the duck race fair? Test it.

This page runs the very same race physics the game uses — thousands of races, right in your browser — and counts who wins. Every duck should win about equally often.

The fairness test

Choose the field and press Start. Nothing is sent anywhere — every race runs in your browser.

Our results: 160,000 races

We ran the same test on our own machine on 13 October 2026: 20,000 races for each course length with 8 ducks, and for each field size on the 300 m course. Almost all of them look exactly like equal chances — no duck, no place in the list and no course length favours anyone.

8 ducks, 300 m, 20,000 races

Each duck should win about 1 race in 8 (12.5%, the gold line).

Duck 12,476 · 12.4%
Duck 22,482 · 12.4%
Duck 32,567 · 12.8%
Duck 42,557 · 12.8%
Duck 52,542 · 12.7%
Duck 62,449 · 12.2%
Duck 72,414 · 12.1%
Duck 82,513 · 12.6%

Every course and field size

FieldCourseRacesFair shareFewest – most winsχ² (df)p-valueResult
8 ducks100 m20,00012.5%12.0% – 12.8%7.31 (7)0.398Equal chances
8 ducks300 m20,00012.5%12.1% – 12.8%8.23 (7)0.313Equal chances
8 ducks600 m20,00012.5%12.0% – 12.9%14.85 (7)0.038Uneven by chance (1 in 20 runs)
8 ducks900 m20,00012.5%12.2% – 12.8%6.15 (7)0.523Equal chances
3 ducks300 m20,00033.3%33.1% – 33.5%0.47 (2)0.791Equal chances
5 ducks300 m20,00020.0%19.8% – 20.6%4.71 (4)0.318Equal chances
10 ducks300 m20,00010.0%9.3% – 10.4%20.32 (9)0.016Uneven by chance (1 in 20 runs)
12 ducks300 m20,0008.3%7.9% – 8.6%9.02 (11)0.620Equal chances

A p-value above 0.05 means the spread is what equal chances look like. Run the test above to check any of these yourself: your results will differ a little, as every set of races is new, and should tell the same story.

Two of these 8 runs came out below 0.05, which pure chance does in a perfectly fair game too (about 1 run in 20). So we checked again with far more races: 8 ducks over 600 m, 60,000 races: χ² = 5.3 (7), p = 0.623 and 10 ducks over 300 m, 90,000 races: χ² = 5.0 (9), p = 0.834. Both are exactly what equal chances look like.

How the test works

Each simulated race is set up exactly the way the game sets up a real one with its default settings, using the game’s own race physics file — the very same code that moves the ducks on screen:

  • the ducks are numbered 1, 2, 3… in the order of the list, just like the names you type;
  • their lanes on the start line are drawn at random, as in every real race;
  • each duck gets the same random personal rhythm the game gives it (how it rides the waves), and the river’s currents, rapids and slipstreams are exactly the game’s;
  • which lanes a rapid favours is drawn again for every race, so there is no lucky lane to learn;
  • the race runs in the same 1/120-second steps until the first duck crosses the line — that duck is counted as the winner.

The only thing skipped is drawing the race on screen, which is why thousands of races take seconds instead of hours.

How to read the results

In a fair race every duck should win about 1 time in N — 12.5% each with 8 ducks. The gold line on each bar marks that expected share. Over a few thousand races the bars will never be perfectly level: a duck might win 12.1% and another 12.9%, just as ten coin flips rarely land exactly five heads.

So the test also runs a chi-square goodness-of-fit test. It asks: “if every duck really had the same chance, how often would the wins be spread at least this unevenly just by luck?” That probability is the p-value. A p-value above 0.05 means the result is exactly what equal chances look like. In a perfectly fair game, about 1 run in 20 still dips below 0.05 by pure chance — run it again and it disappears.

What we found

Over tens of thousands of races, the position of a name in the list makes no difference: every duck wins its fair share, and the chi-square test finds nothing but chance. Lanes are drawn at random for every race, the river doesn’t know the names, and nothing ever steers a duck towards the finish — so every name in your list has exactly the same chance to win.

Seeing the same name win twice in a row? That’s randomness too — each race starts fresh, with no memory of the last one. More answers in the FAQ.