Single-file interactive lesson (age ~12) distinguishing theoretical probability from observed frequency.
- Open
index.htmlin any modern browser (Chrome 100+, Firefox 100+, Edge 100+, Safari 15+). No build step, no server, no dependencies, no network requests after load. - To serve locally:
python -m http.server 8000then openhttp://localhost:8000/(plain double-click open works identically).
index.html— the entire app (HTML + CSS + JS, ~29 KB).EDUCATOR_GUIDE.md,TEST_REPORT.md,LICENSE— required package docs.- Randomness: seeded
mulberry32PRNG in JS. Every experiment run derives its seed from the visible Seed input + cumulative trial count, so runs are reproducible: same seed + same sequence of actions ⇒ same numbers. Automated tests (below) inject fixed seeds for deterministic verification.
- Development: none needed (static file).
- Production preview: serve the folder over any static HTTPS host (GitHub Pages, Netlify free tier,
python -m http.server). No paid hosting required.
node tests.js (Node 16+) runs deterministic checks of every acceptance example — see TEST_REPORT.md for actual results.
- No audio (optional feature intentionally omitted; handled gracefully).
- Progress is in-memory only; a page refresh resets the lesson (by design — "reset/replay without reload" is provided in-app).
- Charts are lightweight CSS bars; screen-reader users get equivalent live-region text summaries.
MIT (see LICENSE). All content original; no third-party assets.