D&D Probability distributions

Table of Contents

1 Dice averages

D4 D6 D8 D10 D12 D20
2.5 3.5 4.5 5.5 6.5 10.5

2 Advantage and Disadvantage

A normal, unweighted die has equal probabilities, so the cumulative probability distribution is just a straight line. However, the advantaged throws are much better, having

import numpy as np

d20 = np.arange(1,21)

disadvantage = (400-d20**2)/400.0
normal_roll = (20-d20)/20.0
advantage = ((20-d20)**2)/400.0
return np.array([d20.tolist(),
                 disadvantage.tolist(),
                 normal_roll.tolist(),
                 advantage.tolist()]) \
                 .transpose()
1.0 0.9975 0.95 0.9025
2.0 0.99 0.9 0.81
3.0 0.9775 0.85 0.7225
4.0 0.96 0.8 0.64
5.0 0.9375 0.75 0.5625
6.0 0.91 0.7 0.49
7.0 0.8775 0.65 0.4225
8.0 0.84 0.6 0.36
9.0 0.7975 0.55 0.3025
10.0 0.75 0.5 0.25
11.0 0.6975 0.45 0.2025
12.0 0.64 0.4 0.16
13.0 0.5775 0.35 0.1225
14.0 0.51 0.3 0.09
15.0 0.4375 0.25 0.0625
16.0 0.36 0.2 0.04
17.0 0.2775 0.15 0.0225
18.0 0.19 0.1 0.01
19.0 0.0975 0.05 0.0025
20.0 0.0 0.0 0.0
import numpy as np
import matplotlib.pyplot as plot

rollsNP = np.array(rolls)

fig, ax = plot.subplots()

d20 = np.arange(1,21)

ax.set_title("Advantage, normal roll, and disadvantage probabilities")
ax.set_xlabel("/x/")
ax.set_ylabel("Probability of rolling /x/ or higher")

plot.bar(rollsNP.T[0], rollsNP.T[1], color='blue', label="disadvantage")
plot.bar(rollsNP.T[0], rollsNP.T[2], color='red', label="normal roll")
plot.bar(rollsNP.T[0], rollsNP.T[3], color='green', label="advantage")

fig.tight_layout()
name = 'adv-disadv-plot.png'
fig.savefig(name, dpi=200)
return name

adv-disadv-plot.png

3 Multiple rolls

Binomial distribution

pmf \({n \choose k}\,p^{k}(1-p)^{n-k}\)
CDF \(\sum^{\lfloor k \rfloor}_{i=0} {n \choose i} p^i {(1-p)}^{n-i}\)
Mean \(np\)
Median \(\lfloor np\rfloor \text{ or } \lceil np\rceil\)
Mode \(\lfloor (n+1)p\rfloor \text { or } \lceil (n+1)p\rceil -1\)
Variance \(np(1-p)\)

were \({n\choose k} = \frac{n!}{k!(n-k)!}\) is the binomial coefficient (nCk on calculators), also known as choosing \(k\) subsets out of \(n\) elements.

Author: Robert Kovacsics

Created: 2018-10-04 Thu 18:52

Validate