# Earthdawn dice roll probabilities

A. N. Other
October 26, 2010
Abstract
Regarding the question posted on StackExchange, “Earthdawn dice
roll probabilities”: Earthdawn’s dice mechanics seem complicated, but
it is still possible to pre-calculate a character’s chances. Knowing the
probability mass function of an exploding n-sided die, it is quite easy to
calculate the mean and variance at any step based on the linearity of the
expectation operator and the Bienaym´e formula. We provide a table of
means and variances for steps 1 through 12 on page 2. Furthermore, it
is possible to use the operations of horizontal shifting and convolution
to pre-calculate the probability of hitting a given target number at each
step. We provide such a table on page 7 that precalculates probabilities
for target numbers 1 through 50 for steps 1 through 12.

The probability mass function (pmf) fn : N → [0, 1] of an exploding n-sided
die is given by
(
0
if x ≡ 0 (mod n)
fn (x) =
x
1 bn
c+1
otherwise
(n)
If the random variable Xn is the outcome of rolling an exploding n-sided die,
then its mean µ and variance σ 2 are given by:
µ = E[Xn ] =

X

xfn (x) =

x=1

and
σ 2 = V ar[Xn ] =

X

(x − µ)2 fn (x) =

x=1

n(n + 1)
2(n − 1)

n(n + 1)(n(n + 7) − 2)
12(n − 1)2

respectively. From these formulae, we can compute the means and variances of
exploding d6s, d8s, d10s and d12s:
die µ
σ2
d6
21/5 = 4.2
266/25 = 10.64
d8
36/7 = 5.14286
708/49 = 14.449
d10 55/9 = 6.11111
1540/81 = 19.0123
d12 78/11 = 7.09091 2938/121 = 24.281
Adding a constant c to a dice roll X shifts the graph of its pmf c units to
the right. In Precalculus, we learn that the result of horizontally shifting the
1

graph of a function, f (x), c units to the right is the function g(x) = f (x − c).
Therefore, the pmf of the dice roll X + c, where c is a constant, is the function
f (x − c) where f is the pmf of the dice roll X .
If f and g are the pmfs of any two dice rolls X and Y , the pmf of the sum
of these two dice rolls, Z = X + Y , is given by the convolution:
(f ∗ g)(x) =

X

f (y)g(x − y)

y=−∞

The convolution operator ∗ is commutative, associative, distributive, and associative with scalar multiplication.
If X and Y are two independent random variables and a,b, and c are constants, then E[aX + bY + c] = aE[X] + bE[Y ] + c from the linearity of the
expectation operator. And V ar[aX + bY + c] = a2 V ar[X] + b2 V ar[Y ] (this is
called the Bienaym´e formula). If you’re only interested in calculating the means
and variances of each step in Earthdawn, they can be calculated from these two
formulae and the means and variances in the previous table:
µ
σ2
Step Dice Throw
1
d6-3
6/5
266/25
2
d6-2
11/5
266/25
3
d6-1
16/5
266/25
4
d6
21/5
266/25
5
d8
36/7
708/49
6
d10
55/9
1540/81
7
d12
78/11
2938/121
8
2d6
42/5
532/25
9
d8 + d6
327/35 30734/1225
10
2d8
72/7
1416/49
11
d10 + d8
709/63 132808/3969
12
2d10
110/9
3080/81
...
...
The means increase monotonically with the step. So while it’s technically
possible to succeed with a low step number and yet fail on a high step number,
the probability of succeeding on a high step is still greater than on a low step.
Note that the mean of step number s is approximately s+δ where δ ranges from
0.09091 to 0.4. So that’s a real easy way to memorize it. The variances are the
same from steps 1 to 4; they increase at each step from 4 to 12 except going
from step 7 to step 8, because step 7 is a roughly uniform distribution (wide
variance) and step 8 is a roughly triangular distribution (narrower variance).
Explanation of how to calculate means and variances at higher
steps.
Because of the linearity of the expectation operator, means are additive.
Note that the mean of step 9 (d8+d6) is just the mean of step 4 (d6) plus the
mean of step 5 (d8). Ditto for variances.
If you need the spread (standard deviation), then just take the square root
of the variance. But note that unlike variances, standard deviations are not
2

Example of how to compute the odds of achieving a given target
number.
To calculate the chance of success at a step s against a target number t, you
have two main choices:
First, you can approximate your chances using the mean and variance. To do
this you can use a normal approximation with an integer correction. However,
this method is not so great, especially when only one die is thrown. But it
improves as more dice are rolled together. Basically, you find the area under a
to ∞. If you use a standard normal table,
standard normal curve from t−0.5−µ
σ
be sure to take the complement of the tabled entry. By “integer correction,” I
just mean subtract a half from t (as shown) to correct for using a continuous
distribution to estimate a discrete distribution.
Second, you can calculate the probability exactly, by working out the pmf
fs , using the techniques in this paper. If the random variable X represents the
outcome of throwing
P∞ the dice for step s, then the probability of rolling t or more
is P r[X ≥ t] = x=t fs (x). Practically, you only need to work out the partial
sum, with say 100 terms, because it converges so quickly. This is the method I
recommend. Its more trouble than the normal approximation, but its also more
exact.
Lets work out an actual example, using step 9 (d8 + d6). We’ll do the
calculations in Mathematica. Any CAS will do (e.g., Axiom, Maxima, Sage, ...,
even a TI-89 calculator). You could do it manually, but using a CAS makes it
fast, easy and accurate.
Step 1. Type in the general pmf for an exploding n-sided die:
Pmf[n , x ]:=If[x ≤ 0kMod[x, n] == 0, 0, n∧ − (Floor[x/n] + 1)]
Step 2. Next, type in the pmf for step 9 (d8 + d6) which we get by
convolving the pmf of an exploding d8 with the pmf of an exploding d6. We’re
only going to use a partial sum with 100 terms:
D6D8[x ]:=Sum[Pmf[6, y]Pmf[8, x − y], {y, 1, 100}]
Remember, the pmf at x tells you the probability of rolling exactly an x.
Here’s a plot of this pmf for x ∈ {1, . . . , 50}. You can output this with
ListPlot[Table[D6D8[t], {t, 50}]]:

3

Step 3. Next, type in the expression for the probability of hitting the target
number t or more. This is just the pmf we just calculated summed from x = t
to ∞, but again we’re only going to use a partial sum with 100 terms:
ProbabilityOfTargetOrMore[t ]:=Sum[D6D8[x], {x, t, 100}]
Here is the plot of the probability of hitting the target number t or more, where t
ranges from 1 to 50. You can output this with ListPlot[Table[ProbabilityOfTargetOrMore[t], {t, 50}]]:

Now lets compare these results to a normal approximation with integer correction. To get these approximations for targets in the range 1 to 30 and convert

4

them to decimal, use these commands:
µ:=327/35
σ:=Sqrt[30734/1225]
(1 − CDF[NormalDistribution[µ, σ], #])&/@Range[30]//N
(We took the numbers for the mean and variance of step 9 right off the table
on page 2.)
Now lets put together the results of both methods. In the following table, the
first column shows the target number; it ranges from 1 to 30. The second column
shows the result of approximating the pmf using the 100-term partial sum of
the convolution of pmfs for exploding d8 and d6. The third column shows the
normal approximation with integer correction. And the fourth column shows
the difference between columns 2 and 3:
Difference
Target ProbabilityOfTargetOrMore Normal Approx.
1
1.
0.961254
0.0387456
2
1.
0.941301
0.0586992
3
0.979167
0.914053
0.0651138
4
0.9375
0.878293
0.0592067
5
0.875
0.833191
0.0418089
6
0.791667
0.778521
0.0131458
7
0.6875
0.714834
-0.0273339
8
0.583333
0.643533
-0.0601992
9
0.475694
0.566815
-0.091121
10
0.385417
0.487486
-0.102069
0.309896
0.40865
-0.0987546
11
12
0.249132
0.333357
-0.0842248
13
0.203125
0.264247
-0.0611216
14
0.175347
0.203283
-0.0279355
15
0.144387
0.151599
-0.00721282
16
0.116319
0.10949
0.00682908
0.0907118
0.0765182
0.0141936
17
18
0.0701678
0.051706
0.0184619
19
0.054362
0.0337614
0.0206006
0.043873
0.0212892
0.0225838
20
21
0.0351321
0.012958
0.0221741
22
0.0291522
0.00760975
0.0215424
23
0.0232567
0.00431013
0.0189465
0.0182051
0.0023537
0.0158514
24
25
0.0139431
0.00123886
0.0127043
0.0108929
0.00062834
0.0102646
26
27
0.00841883
0.000307017
0.00811182
28
0.00668975
0.00014449
0.00654526
29
0.00525957
0.0000654848
0.00519409
30
0.00425488
0.0000285758
0.0042263
The normal approximation is closet at target number 16, then it starts to
5

produce inaccurate results, which get progressively worse.
Grand Finale. Now we have everything we need to know in order to produce a table showing the probability of hitting a target number t ∈ {1, . . . , 50}
for steps s ∈ {1, . . . , 12}:
Pmf[n , x ]:=If[x ≤ 0kMod[x, n] == 0, 0, n∧ − (Floor[x/n] + 1)]
Step1[t ]:=Sum[Pmf[6, x + 3], {x, t, 100}]
Step2[t ]:=Sum[Pmf[6, x + 2], {x, t, 100}]
Step3[t ]:=Sum[Pmf[6, x + 1], {x, t, 100}]
Step4[t ]:=Sum[Pmf[6, x], {x, t, 100}]
Step5[t ]:=Sum[Pmf[8, x], {x, t, 100}]
Step6[t ]:=Sum[Pmf[10, x], {x, t, 100}]
Step7[t ]:=Sum[Pmf[12, x], {x, t, 100}]
Step8[t ]:=Sum[Sum[Pmf[6, y]Pmf[6, x − y], {y, 1, 100}], {x, t, 100}]
Step9[t ]:=Sum[Sum[Pmf[6, y]Pmf[8, x − y], {y, 1, 100}], {x, t, 100}]
Step10[t ]:=Sum[Sum[Pmf[8, y]Pmf[8, x − y], {y, 1, 100}], {x, t, 100}]
Step11[t ]:=Sum[Sum[Pmf[10, y]Pmf[8, x − y], {y, 1, 100}], {x, t, 100}]
Step12[t ]:=Sum[Sum[Pmf[10, y]Pmf[10, x − y], {y, 1, 100}], {x, t, 100}]
(Through[{Identity, Step1, Step2, Step3, Step4, Step5, Step6, Step7,
Step8, Step9, Step10, Step11, Step12}[#]])&
/@Range[50]//N //MatrixForm

These instructions produce the desired table of probabilities:

6

Target
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.

7

Step1
0.5
0.333333
0.166667
0.166667
0.138889
0.111111
0.0833333
0.0555556
0.0277778
0.0277778
0.0231481
0.0185185
0.0138889
0.00925926
0.00462963
0.00462963
0.00385802
0.00308642
0.00231481
0.00154321
0.000771605
0.000771605
0.000643004
0.000514403
0.000385802
0.000257202
0.000128601
0.000128601
0.000107167
0.0000857339
0.0000643004
0.0000428669
0.0000214335
0.0000214335
0.0000178612
0.000014289
0.0000107167
7.144490119949525`*∧ -6
3.5722450353587615`*∧ -6
3.5722450353587615`*∧ -6
2.9768708545936343`*∧ -6
2.381496673828507`*∧ -6
1.7861224930633798`*∧ -6
1.1907483122982524`*∧ -6
5.953741315331252`*∧ -7
5.953741315331252`*∧ -7
4.96145101405604`*∧ -7
3.9691607127808274`*∧ -7
2.976870411505615`*∧ -7
1.9845801102304033`*∧ -7

Step2
0.666667
0.5
0.333333
0.166667
0.166667
0.138889
0.111111
0.0833333
0.0555556
0.0277778
0.0277778
0.0231481
0.0185185
0.0138889
0.00925926
0.00462963
0.00462963
0.00385802
0.00308642
0.00231481
0.00154321
0.000771605
0.000771605
0.000643004
0.000514403
0.000385802
0.000257202
0.000128601
0.000128601
0.000107167
0.0000857339
0.0000643004
0.0000428669
0.0000214335
0.0000214335
0.0000178612
0.000014289
0.0000107167
7.1444901101031244`*∧ -6
3.572245025512361`*∧ -6
3.572245025512361`*∧ -6
2.9768708447472338`*∧ -6
2.3814966639821066`*∧ -6
1.7861224832169792`*∧ -6
1.190748302451852`*∧ -6
5.953741216867247`*∧ -7
5.953741216867247`*∧ -7
4.961450915592035`*∧ -7
3.9691606143168234`*∧ -7
2.976870313041611`*∧ -7

Step3
0.833333
0.666667
0.5
0.333333
0.166667
0.166667
0.138889
0.111111
0.0833333
0.0555556
0.0277778
0.0277778
0.0231481
0.0185185
0.0138889
0.00925926
0.00462963
0.00462963
0.00385802
0.00308642
0.00231481
0.00154321
0.000771605
0.000771605
0.000643004
0.000514403
0.000385802
0.000257202
0.000128601
0.000128601
0.000107167
0.0000857339
0.0000643004
0.0000428669
0.0000214335
0.0000214335
0.0000178612
0.000014289
0.0000107167
7.1444901101031244`*∧ -6
3.572245025512361`*∧ -6
3.572245025512361`*∧ -6
2.9768708447472338`*∧ -6
2.3814966639821066`*∧ -6
1.7861224832169792`*∧ -6
1.190748302451852`*∧ -6
5.953741216867247`*∧ -7
5.953741216867247`*∧ -7
4.961450915592035`*∧ -7
3.9691606143168234`*∧ -7

Step4
1.
0.833333
0.666667
0.5
0.333333
0.166667
0.166667
0.138889
0.111111
0.0833333
0.0555556
0.0277778
0.0277778
0.0231481
0.0185185
0.0138889
0.00925926
0.00462963
0.00462963
0.00385802
0.00308642
0.00231481
0.00154321
0.000771605
0.000771605
0.000643004
0.000514403
0.000385802
0.000257202
0.000128601
0.000128601
0.000107167
0.0000857339
0.0000643004
0.0000428669
0.0000214335
0.0000214335
0.0000178612
0.000014289
0.0000107167
7.144490051024722`*∧ -6
3.5722449664339584`*∧ -6
3.5722449664339584`*∧ -6
2.9768707856688312`*∧ -6
2.381496604903704`*∧ -6
1.7861224241385767`*∧ -6
1.1907482433734495`*∧ -6
5.953740626083222`*∧ -7
5.953740626083222`*∧ -7
4.96145032480801`*∧ -7

Step5
1.
0.875
0.75
0.625
0.5
0.375
0.25
0.125
0.125
0.109375
0.09375
0.078125
0.0625
0.046875
0.03125
0.015625
0.015625
0.0136719
0.0117187
0.00976562
0.0078125
0.00585937
0.00390625
0.00195312
0.00195312
0.00170898
0.00146484
0.0012207
0.000976562
0.000732422
0.000488281
0.000244141
0.000244141
0.000213623
0.000183105
0.000152588
0.00012207
0.0000915527
0.0000610351
0.0000305176
0.0000305176
0.0000267029
0.0000228882
0.0000190735
0.0000152588
0.0000114441
7.629387255292386`*∧ -6
3.814689989667386`*∧ -6
3.814689989667386`*∧ -6
3.337852831464261`*∧ -6

Step6
1.
0.9
0.8
0.7
0.6
0.5
0.4
0.3
0.2
0.1
0.1
0.09
0.08
0.07
0.06
0.05
0.04
0.03
0.02
0.01
0.01
0.009
0.008
0.007
0.006
0.005
0.004
0.003
0.002
0.001
0.001
0.0009
0.0008
0.0007
0.0006
0.0005
0.0004
0.0003
0.0002
0.0000999999
0.0000999999
0.0000899999
0.0000799999
0.0000699999
0.0000599999
0.0000499999
0.0000399999
0.0000299999
0.0000199999
9.9999`*∧ -6

Step7
1.
0.916667
0.833333
0.75
0.666667
0.583333
0.5
0.416667
0.333333
0.25
0.166667
0.0833333
0.0833333
0.0763889
0.0694444
0.0625
0.0555556
0.0486111
0.0416667
0.0347222
0.0277778
0.0208333
0.0138889
0.00694444
0.00694444
0.00636574
0.00578704
0.00520833
0.00462963
0.00405092
0.00347222
0.00289352
0.00231481
0.00173611
0.00115741
0.000578702
0.000578702
0.000530477
0.000482252
0.000434026
0.000385801
0.000337576
0.00028935
0.000241125
0.0001929
0.000144674
0.0000964491
0.0000482238
0.0000482238
0.000044205

Step8
1.
1.
0.972222
0.916667
0.833333
0.722222
0.583333
0.472222
0.37963
0.305556
0.25
0.212963
0.166667
0.12963
0.099537
0.0763889
0.0601852
0.0509259
0.0393519
0.0300926
0.0226337
0.0169753
0.0131173
0.0110597
0.00848765
0.00643004
0.00477966
0.00353652
0.00270062
0.00227195
0.00173611
0.00130744
0.000964506
0.000707305
0.000535837
0.000450103
0.000342936
0.000257202
0.000188734
0.000137531
0.000103595
0.0000869246
0.0000660865
0.0000494161
0.0000361194
0.0000261965
0.0000196473
0.000016472
0.0000125029
9.32752475557722`*∧ -6

Step9
1.
1.
0.979167
0.9375
0.875
0.791667
0.6875
0.583333
0.475694
0.385417
0.309896
0.249132
0.203125
0.175347
0.144387
0.116319
0.0907118
0.0701678
0.054362
0.043873
0.0351321
0.0291522
0.0232567
0.0182051
0.0139431
0.0108929
0.00841883
0.00668975
0.00525957
0.00425488
0.00334111
0.00262928
0.00201349
0.00156255
0.00119703
0.000938028
0.000729784
0.000590802
0.000462738
0.00036215
0.000275799
0.000212287
0.000161685
0.000127077
0.0000987396
0.0000794318
0.000061861
0.0000480968
0.0000364842
0.0000281731

Step10
1.
1.
0.984375
0.953125
0.90625
0.84375
0.765625
0.671875
0.5625
0.46875
0.386719
0.316406
0.257812
0.210937
0.175781
0.152344
0.125
0.101562
0.0812988
0.064209
0.050293
0.0395508
0.0319824
0.0275879
0.0224609
0.0180664
0.0142822
0.0111084
0.00854492
0.0065918
0.00524902
0.0045166
0.00366211
0.00292969
0.00230026
0.00177383
0.0013504
0.00102997
0.00081253
0.000698089
0.000564575
0.000450134
0.000351906
0.00026989
0.000204086
0.000154495
0.000121116
0.00010395
0.0000839231
0.000066757

Step11
1.
1.
0.9875
0.9625
0.925
0.875
0.8125
0.7375
0.65
0.5625
0.473437
0.395312
0.326875
0.268125
0.219062
0.179687
0.15
0.131562
0.11168
0.0931641
0.0758594
0.0610156
0.0485078
0.0383359
0.0305
0.0251953
0.020835
0.0177705
0.0147324
0.012002
0.00956348
0.00754199
0.005925
0.00473691
0.00377937
0.00309631
0.00252905
0.00211274
0.00172043
0.00138025
0.00109062
0.000867113
0.00068367
0.000545788
0.00043363
0.000351592
0.000283803
0.00023378
0.000188827
0.000152138

Step12
1.
1.
0.99
0.97
0.94
0.9
0.85
0.79
0.72
0.64
0.55
0.47
0.398
0.334
0.278
0.23
0.19
0.158
0.134
0.118
0.1
0.084
0.0697
0.0571
0.0462
0.037
0.0295
0.0237
0.0196
0.0172
0.0145
0.0121
0.00996
0.00808
0.00646
0.0051
0.004
0.00316
0.00258
0.00226
0.0019
0.00158
0.001295
0.001045
0.000829995
0.000649995
0.000504995
0.000394995
0.000319995
0.000279995

Conclusion. Without resorting to brute force methods (i.e., enumerating
all outcomes with a spreadsheet or computer program), it is possible to compute
the mean and variances of each step in Earthdawn, based on the linearity of the
expectation operator and the Bienaym´e formula.
Furthermore, using the pmfs of exploding n-sided dice plus the operations of
horizontal shifting and convolution, it is possible to produce analytic formulae
for the pmfs of the dice rolls for all steps in Earthdawn.
These analytic formulae may be approximated quickly using a CAS like
Mathematica in order to calculate the chance of success for any step and any
target number.

8