Dice Roller · observed 2026-08-17
6,000 rolls, six faces, one 67-count gap
If a six-sided die is rolled six thousand times by a browser tool, how far should the six face counts drift from a perfectly even split before that drift means anything at all?
Pass 1
The headline gap
Before looking at any individual face, it helps to know the single number that summarises how far the whole sample drifted from an even split. Against a simple reference of one thousand rolls per face across the six-thousand-roll sample, the largest gap on any one face was sixty-seven rolls. That is the number this notebook leads with, because every other figure below either builds toward it or explains what it does and does not mean.
max absolute deviation 67
6,000-call sample vs. 1,000-per-face reference
Method: computed from a production browser 6,000×1d6 sample, observed 2026-08-17.
LIMIT A descriptive comparison, not a significance test.
Pass 2
Two receipts, read from the notation field
Before the large sample, this pass checks the small, everyday case a tabletop player actually types: the notation 2d6+3, two six-sided dice plus a flat modifier. The production interface was asked for it twice in the same session, and each receipt is reproduced below exactly as the tool displayed it, face values and total included, with nothing recomputed after the fact.
- Roll 1 · 2d6+3
- [2 + 4] + 3 = 9
- Roll 2 · 2d6+3
- [5 + 4] + 3 = 12
Pass 3
All six faces, side by side
The headline stamp above only names the worst-case gap; the full ledger below shows every face, its observed count across the six-thousand-roll sample, and how far each one sits from the same one-thousand-per-face reference. Reading all six rows together is the honest way to judge the shape of the drift — a single number can hide whether the spread is broad and shallow or narrow and sharp, and the table settles that question at a glance.
| Face | Observed count | Absolute deviation from 1,000 |
|---|---|---|
| 1 | 1,043 | 43 |
| 2 | 942 | 58 |
| 3 | 1,026 | 26 |
| 4 | 1,014 | 14 |
| 5 | 1,042 | 42 |
| 6 | 933 | 67 |
Pass 4
Which execution path this sample actually exercised
The six-thousand-call sample did not click through the visible dice animation six thousand times; it called DICE_CORE.generateLogicalResult, the specific logical-result function the production page's loaded core module exposes for one-d6 rolls, in a tight loop, and recorded the return values. That is the one execution path this sample tested. The public tool also ships physical/WebGL and other fallback paths that this sample did not call, and this notebook makes no claim about how those other paths behave.
Logical generator only
Execution path sampled: DICE_CORE.generateLogicalResult
Method: 6,000 calls to the production page's loaded DICE_CORE.generateLogicalResult for one d6, observed 2026-08-17.
LIMIT The public tool also has physical/WebGL and other fallback paths not exercised by this sample; this notebook does not describe their behavior.
Pass 5
What this ledger is for
Everything above describes a tabletop utility being read honestly, not a fairness audit. The ledger is useful for satisfying curiosity about how a browser die behaves over thousands of calls, and for tabletop and other casual uses where a rough sense of balance is enough. It was never intended, and this notebook does not treat it, as sufficient evidence for gambling, certified draws or any procedure that requires an audited random source.
Tabletop & casual use
Recommended use boundary
Method: production use-boundary disclosure, observed 2026-08-17.
LIMIT Not for gambling or certified draws.
Across the six-thousand-call sample, the counts ranged from 933 to 1,043 against a 1,000-per-face reference, with a maximum absolute deviation of 67 on face 6. Those are the observed numbers, from one dated 6,000-call run of the tested logical-generator path only. A single sample like this cannot certify fairness, cannot rule out bias and cannot predict how a future batch, another execution path or a longer run would behave; reading the full ledger instead of the headline number is only useful for seeing exactly what happened in this one.