Open this document in the playground · Download source
Round each result, not the average
Part E · L20 · Prerequisite: L19 · One modelling idea
Situation, question, and prediction
D&D 2014 Fireball at its base spell level deals 8d6 damage, halved on a successful Dexterity save. Given that the save succeeded, what is mean damage? Predict whether it is exactly half of 28.
Build
dice_pool(8, 6).sum() efficiently builds the ordinary total. // 2 divides each possible integer result and rounds down. This is a transformation of the entire distribution, not division of a summary number.
full = dice_pool(8, 6).sum()
half = full // 2
output("Damage given failed save", full)
output("Damage given successful save", half)
Damage given failed save · DieRoll · mean 28.000
| outcome | % | frac | X |
|---|---|---|---|
| 8 | 0.00 | 0 | 0.000 |
| 9 | 0.00 | 0.000 | 0.000 |
| 10 | 0.00 | 0.000 | 0.000 |
| 11 | 0.01 | 0.000 | 0.000 |
| 12 | 0.02 | 1/5064 | 0.000 |
| 13 | 0.05 | 1/2117 | 0.000 |
| 14 | 0.10 | 1/983 | 0.001 |
| 15 | 0.20 | 2/997 | 0.002 |
| 16 | 0.37 | 4/1093 | 0.004 |
| 17 | 0.62 | 4/641 | 0.006 |
| 18 | 1.00 | 13/1299 | 0.010 |
| 19 | 1.52 | 10/659 | 0.015 |
| 20 | 2.18 | 23/1053 | 0.022 |
| 21 | 2.99 | 5/167 | 0.030 |
| 22 | 3.92 | 44/1123 | 0.039 |
| 23 | 4.90 | 49/999 | 0.049 |
| 24 | 5.88 | 424/7207 | 0.059 |
| 25 | 6.77 | 84/1241 | 0.068 |
| 26 | 7.48 | 115/1538 | 0.075 |
| 27 | 7.94 | 128/1613 | 0.079 |
| 28 | 8.09 | 48/593 | 0.081 |
| 29 | 7.94 | 128/1613 | 0.079 |
| 30 | 7.48 | 115/1538 | 0.075 |
| 31 | 6.77 | 84/1241 | 0.068 |
| 32 | 5.88 | 424/7207 | 0.059 |
| 33 | 4.90 | 49/999 | 0.049 |
| 34 | 3.92 | 44/1123 | 0.039 |
| 35 | 2.99 | 5/167 | 0.030 |
| 36 | 2.18 | 23/1053 | 0.022 |
| 37 | 1.52 | 10/659 | 0.015 |
| 38 | 1.00 | 13/1299 | 0.010 |
| 39 | 0.62 | 4/641 | 0.006 |
| 40 | 0.37 | 4/1093 | 0.004 |
| 41 | 0.20 | 2/997 | 0.002 |
| 42 | 0.10 | 1/983 | 0.001 |
| 43 | 0.05 | 1/2117 | 0.000 |
| 44 | 0.02 | 1/5064 | 0.000 |
| 45 | 0.01 | 0.000 | 0.000 |
| 46 | 0.00 | 0.000 | 0.000 |
| 47 | 0.00 | 0.000 | 0.000 |
| 48 | 0.00 | 0 | 0.000 |
Damage given successful save · DieRoll · mean 13.750
| outcome | % | frac | X |
|---|---|---|---|
| 4 | 0.00 | 0.000 | 0.000 |
| 5 | 0.01 | 0.000 | 0.000 |
| 6 | 0.07 | 1/1495 | 0.001 |
| 7 | 0.30 | 1/331 | 0.003 |
| 8 | 0.99 | 37/3738 | 0.010 |
| 9 | 2.52 | 31/1231 | 0.025 |
| 10 | 5.18 | 45/869 | 0.052 |
| 11 | 8.82 | 395/4477 | 0.088 |
| 12 | 12.7 | 125/988 | 0.127 |
| 13 | 15.4 | 84/545 | 0.154 |
| 14 | 16.0 | 193/1204 | 0.160 |
| 15 | 14.2 | 51/358 | 0.142 |
| 16 | 10.8 | 115/1066 | 0.108 |
| 17 | 6.91 | 77/1114 | 0.069 |
| 18 | 3.70 | 69/1864 | 0.037 |
| 19 | 1.62 | 20/1231 | 0.016 |
| 20 | 0.57 | 2/353 | 0.006 |
| 21 | 0.15 | 1/672 | 0.001 |
| 22 | 0.03 | 1/3719 | 0.000 |
| 23 | 0.00 | 0.000 | 0.000 |
| 24 | 0.00 | 0 | 0.000 |
Run, read, and check
Full mean is 28; successful-save mean is 13.75, not 14. Half the possible probability mass is on odd totals, where rounding loses half a point, giving a mean loss of 1/4. Half-damage range is 4–24.
Change one thing
Use one d6 instead: full mean 3.5, rounded-half mean 1.5. Verify by writing transformed faces 0,1,1,2,2,3.
Try it yourself
Why is this not the overall expected damage to a target? Answer: it conditions on the save result. You must also know the target’s save chance; L32 builds that full scoped question. Checkpoint: keep the conditioning statement in every output label.
Rules and model notes
D&D Basic Rules 2014, Fireball and the basic round-down convention. Base third-level spell, one target; no resistance, vulnerability, Evasion, or other damage reductions.
What you now know / where next
Round each result, not the average is the reusable idea. Follow the generated previous/next links below, or return to the course index. For a complete self-contained application, see fireball-half-damage.
Content ID: L20 · Review status: pilot
Prerequisites: L19