Skip to content

Latest commit

 

History

3 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Zero Ball Knowledge Combine

A 100 meter dash that picks your fantasy football draft order.

Type in 12 team names, hit start, and twelve football players sprint down a track. Finish order is your draft order. One HTML file, no dependencies, no build step, works offline.

lanes deps tests

Run it

Open index.html in any browser. That's it.

Here is the link: https://patrick-vuong.github.io/zero-ball-knowledge-dash/

How it works

Each runner gets a fresh roll of the same six parameters every race:

Parameter Range What it does
Reaction time 0.10 – 0.28 s How fast they leave the blocks
Top speed ~10.4 ± 0.5 m/s Ceiling, clamped to 9.3 – 11.5
Acceleration constant 1.05 – 1.55 How quickly they reach that ceiling
Wobble (x2) ±2 – 5% Surges and stumbles mid-race
Late kick -2% – +6.5% Closing burst over the last 25 m, or a tie-up
Fade 0 – 1.4% /s Endurance drop-off after 6 s

Position is integrated per animation frame; finish times are interpolated sub-frame so ties break honestly. Races run about 10.4 seconds, the average margin of victory is 0.22 s, and roughly one race in six is close enough at the line to earn a PHOTO FINISH tag.

Is it actually random?

Every runner draws from an identical distribution, so no lane has an edge. That claim is tested rather than asserted — the suite extracts the physics out of index.html at runtime, so it exercises the exact code the browser runs:

node fairness.test.mjs

Ten tests, including:

  • Win rate is uniform across all 12 lanes. 24,000 races, chi-square 11.3 against a 31.3 critical value at p<0.001. Observed win rates land between 8.07% and 8.68% versus the expected 8.33%.
  • Every lane lands in every draft slot equally. The full 12x12 lane-by-position matrix, chi-square 116.7 with 121 degrees of freedom.
  • Mean finishing position is 6.50 for every lane.
  • Races are independent. Winning one race does not predict winning the next.
  • No repeated orders. Zero identical back-to-back finishes in 3,000 races (there are 479,001,600 possible orderings).
  • Plus structural checks: all 12 always finish, times are plausible and sorted, runners start from a standstill after their reaction time.

Files

File
index.html The whole game — markup, styles, SVG players, physics
fairness.test.mjs Fairness and sanity suite (Node 18+, no dependencies)

Notes

  • Team names are saved to localStorage, so you only type them once.
  • Sound (starter's pistol, finish chimes) toggles from the speaker icon.
  • Lane heights adapt so all 12 lanes fit on screen without scrolling.
  • Typography is Anton / Archivo / Chivo Mono via Google Fonts, with system fallbacks so the page still looks right offline.

About

A 100 meter dash that picks your fantasy football draft order. Twelve football players, one HTML file, provably random.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages