DAMAGE DISTRIBUTION

DAMAGE CALCULATOR

Type a weapon and target profile and see the exact damage distribution — not just “on average.”

The interactive companion to On Average. Existing calculators report the expected output and stop there; this tool shows the full distribution, marks the mean, median, and mode on the same picture, and reports how likely the result you actually need is. The math is exact — no Monte Carlo. The dropdown of every faction’s units is deliberately not here: you type the resolved roll targets directly from your datasheet, and the tool stays on the right side of the IP line.

PROFILE

ATTACKER

Integer or dice (D6, 2D6, D3+3)
The S-vs-T result, resolved.
Integer or dice expression.

DEFENDER

Effective save after AP (or invuln if better). 7+ = no save.
How to read this: “To-wound” is the Strength-vs-Toughness result you would roll on (a 3+, a 5+); “Save” is your armour after the weapon’s AP, or your invulnerable save if it’s better. The tool takes the resolved targets directly — no Strength/Toughness/AP fields to translate.
DISTRIBUTION
Mode Median Mean
MODE
the most likely single value
MEDIAN
50/50 line
MEAN (EV)
the long-run average
THRESHOLD
P(DAMAGE )
PROBABILITY THIS WEAPON CLEARS THE THRESHOLD
Adjust the threshold to read off any “at-least” probability. On Average explains why the “on average” reading is often only a coin flip.
WHY THIS NUMBER IS EXACT

The distribution is computed by probability convolution — not by Monte Carlo simulation. Independent hit-wound-save thinning makes the unsaved-wound count exactly Binomial(A, p_hit · p_wound · p_fail); the total damage is a compound sum of the per-wound damage distribution; the models-destroyed view is a dynamic program with state (killed, wounds remaining on the current model) that respects 10th-edition’s no-spillover rule. Every probability the chart shows is exact to floating-point precision.

The Tier-1 build is no Feel No Pain, no re-rolls, no modifiers, no ability keywords (Sustained Hits / Lethal Hits / Devastating Wounds / Anti-X). Those are scoped for Phase B, paired with the 11th-edition rules pass when it lands.

The math is independently verified by npm run verify:damage against scripts/on_average_examples.py — two implementations of the same algorithm cross-checking each other on every commit.