D&D, Math, and You
A Guide to Statistical Analysis for People who don't know a lot about Statistics.
Table Of Contents
A Primer
Cynthia Ravenblood, a red blooded Fighter like her peers, cares naught about philosophy or conjecture, and only seeks the thrill of battle. But like all her kin, she can't escape the inevitable. Eventually, she must reach a point in her life where she must look deep inside herself and ask the existential question that has haunted her since she stepped foot into that accursed Dwarven Mine.
Cynthia has fought side-by-side with like-minded heroes against the forces of Heaven and Hell, staring death in the face countless times. Each time, whether through bravery, strategy, or sheer blind luck, she has lived to grow stronger, forge bonds with her companions, and settle down for a relaxing time at the local tavern.
And yet, the question continues to burn in her soul. And when she reaches the point where she can no longer ignore it, she's finally forced to confront the weight that has hung over her:
"Should I have picked Two-Weapon Fighting Style instead?"
In times of yore, this question would have gone unanswered, and she would spend the rest of her life filled with doubts, uncertain of her role in life; uncertain of her choices; uncertain that anything she does will ever fill the void inherent to the self.
But no more! Today, Cynthia has the tools that will help her find the answers to these questions, and now, she can finally find peace in the answer she was searching for:
"Nah, Two-Weapon Fighting kinda sucks."
A Few Things First
I'm going to make a few assumptions as I write this guide. I'll cover these assumptions as they become relevant, but the biggest one is one that is important because a lot of people who might be tempted to read a document like this might see the phrase "A Guide to Statistical Analysis", and immediately have a Math Panic™ and run away.
I understand. This is natural.
So going forwards, there will be minimal expectation of prior Statistics Knowledge. From here on out, everything we'll be covering will attempt to be self-contained, and rely only on concepts that themself are taught in this document.
As far as D&D knowledge is concerned, I'm going to try to write this document in a manner that does not require significant D&D knowledge of any edition, but I will make frequent references to concepts from the 5th edition of the game, and most of the practical information contained in this document will pertain to D&D in some form or another.
Motivation
The methodology outlined in this document is going to focus on finding individual Outcomes from a die Roll. Many methods focus on simply generating average numbers, and performing calculations with those.
The intent of this document is not to disparage those approaches. But rather to acknowledge that there are some inherent limitations with that approach
Lack of Interpretation
It's one thing to learn that a character has an expected DPR of 15.250. But that isn't always the question a person asks. Sometimes the question takes a different form:
"How likely is it that I deal 15 damage this round?"
Simply knowing the average DPR of your attacks isn't going to give that kind of information. Is your character able to consistently and reliably deliver that damage on a round-by-round basis, or are they a more swingy character who tends to hit very hard, but less often? There are a few approaches we can use to try to derive that information from the Average, but they are lossy and unreliable.
The methods outlined in this document seek to preserve as much relevant information as possible. The tables and arrays that these methods generate preserve as much (or as little!) information as the user needs. If you only need damage averages, you can certainly build tables that only contain that information. If you want detailed breakdowns of each possible outcome, these methods can handle that as well.
Adaptability
The traditional methods of statistics in D&D are poorly suited to handling "strange" rolls.
A classical example where traditional approaches are with the Spell Bombardment feature that Wild Magic Sorcerers have access to at level 18.
Spell Bombardment
Beginning at 18th level, the harmful energy of your spells intensifies. When you roll damage for a spell and roll the highest number possible on any of the dice, choose one of those dice, roll it again and add that roll to the damage.
A feature like this can be handled carefully if every die roll of a spell is the same, like a 8d6 Fireball, but it doesn't work so well for a spell like Ice Storm, dealing 2d8+4d6. The methods outlined in this document are well suited for that kind of roll.
Terminology
Going forwards, there are a few terms I am going to be using quite a lot to describe different concepts. These are important terms, so I advise you keep them in mind.
Roll
A Roll is a die, or a group of dice, rolled to achieve an outcome. Rolls can be abbreviated, i.e. "8d6" means "roll 8 d6 dice, add them together".
Rolls can be constructed in a variety of ways. Dice can be added together. You could apply the 5th Edition concept of Advantage, where dice are rolled, and you take the highest result. Or you could roll dice and count the dice that match a specific criteria. All of these combinations of dice, and the manner in which we combine them, are Rolls.
Outcome
An Outcome represents the result of a die roll. If I roll two d6 dice and add them together, and get a result of 7, '7' is the outcome of that roll. Alternatively, if we roll 4 d10 dice, and count the number of dice whose outcome is greater than 7, and get 2, then the outcome of that roll is '2'.
Outcomes are nominally interchangable; on a 2d6 roll, any combination of dice with a result of 7 are the same outcome. Exceptions will be called out as needed
Trial
A Trial is the individual combination of dice that result in an outcome. On a 2d6 roll, we might get a result of '2' and '5'. This is a unique trial with an outcome of '7'. If we instead got '3' and '4', this is another unique trial, but with the same outcome as the previous example.
Trials are generally not commutative; i.e., '2' and '5' is not the same trial as '5' and '2'.
Odds
The probability of a given outcome. It represents the number of Trials associated with an individual Outcome, and the number of Trials that a roll is capable of producing. It will usually be expressed as a fraction, but it may also be expressed as a percentage if the fraction is too complex to represent.
My use of the term Odds is not quite congruent with the Dictionary Definition; I am using the term as an expression of the probability of an Outcome occurring, and not as an expression of the relationship between an Outcome and a specific other Outcome.
A Single Die
A Roll of a single die, as the name implies, consists of a single die.
If you've played D&D before, this section is probably going to be extremely obvious and unbearably condescending for me to explain. I'm going to do it anyways, because this is going to mirror the format in which I express more complex rolls, where these concepts may be significantly less obvious. Consider this a "template" for later sections, if you wish.
Types of Dice
Name | # of Faces | Range | Average | Shape |
---|---|---|---|---|
d4 | 4 | [1,4] | 2.5 | Tetrahedron |
d6 | 6 | [1,6] | 3.5 | Cube |
d8 | 8 | [1,8] | 4.5 | Equilateral Octohedron |
d10 | 10 | [1,10] | 5.5 | Pentagonal Trapezohedron |
d12 | 12 | [1,12] | 6.5 | Dodecahedron |
d20 | 20 | [1,20] | 10.5 | Icosahedron |
On a single die, the odds of rolling any individual number on the die are all equal; for our purposes, each Outcome has one possible Trial associated with it. In real life, due to manufacturing defects (or weighted dice...) a single die will never be this perfect, but we ignore these issues for the sake of keeping our math simpler.
So for each of these dice, we can build very simple arrays that relate the outcomes possible for a given die, and the number of trials that are associated with each outcome.
Trials for Single Dice
Outcome | d4 | d6 | d8 | d10 | d12 | d20 |
---|---|---|---|---|---|---|
1 | 1 | 1 | 1 | 1 | 1 | 1 |
2 | 1 | 1 | 1 | 1 | 1 | 1 |
3 | 1 | 1 | 1 | 1 | 1 | 1 |
4 | 1 | 1 | 1 | 1 | 1 | 1 |
5 | 1 | 1 | 1 | 1 | 1 | |
6 | 1 | 1 | 1 | 1 | 1 | |
7 | 1 | 1 | 1 | 1 | ||
8 | 1 | 1 | 1 | 1 | ||
9 | 1 | 1 | 1 | |||
10 | 1 | 1 | 1 | |||
11 | 1 | 1 | ||||
12 | 1 | 1 | ||||
13 | 1 | |||||
14—19 | 6 (1 each) | |||||
20 | 1 | |||||
Total | 4 | 6 | 8 | 10 | 12 | 20 |
The odds, therefore, of rolling any individual Outcome are the number of Trials associated with that Outcome, divided by the total Trials associated with the Roll. Because these rolls all have 1 Trial for each Outcome, all outcomes have odds equal to 1 divided by the Die's size.
Odds for Single Dice
Name | d4 | d6 | d8 | d10 | d12 | d20 |
---|---|---|---|---|---|---|
Odds per Side | 25% (1/4) | 16.667% (1/6) | 12.5% (1/8) | 10% (1/10) | 8.333% (1/12) | 5% (1/20) |
Calculating Averages
The simplest method to get the average of a roll is to take each Outcome, multiply it by the number of Trials associated with that Outcome, add all those multiplied values together, and then divide it by the number of Trials associated with the roll.
So, for example, to get the average of a d6, you'd take 1x1 + 2x1 + 3x1 + 4x1 + 5x1 + 6x1 == 21, and then divide by the 6 total trials, netting 21/6 == 3.5.
Modifiers
There are a lot of ways to represent die modifiers. For our purposes, we're simply going to represent modifiers as a single-sided die whose sole outcome has a value equal to the modifier, with a single trial representing that outcome.
Trials for a Strength Score of 20 (5th Edition)
Outcome | +5 to Damage Rolls |
---|---|
5 | 1 |
Total | 1 |
Special Notation for some Dice
Depending on which version of D&D you are playing, the exact face of the die may transcend its actual face value. For example, Attack Rolls in 5th Edition D&D, where rolling a Natural 1 will always result in a missed attack, and rolling a Natural 20 will always result in a critical hit. We don't usually take these numbers into account when calculating averages, but when building Trial Tables/Odds Tables, it might be necessary to denote these circumstances. So for 5th Edition Attack Rolls, we might construct a table that looks like this instead:
Trials for 5th Edition Attack Rolls
Outcome | d20 |
---|---|
1† | 1 |
2—19 | 18 (1 each) |
20* | 1 |
Total | 20 |
Simplifying Tables
Sometimes you care about the individual numbers being rolled, and need these complete tables. But sometimes you don't need all of that information. For example, suppose you're only interested in counting dice when their value is above '7'. In this situation, we can construct radically simplified tables for each of these dice to capture this scenario:
Trials for Rolls above 7
Outcome | d4 | d6 | d8 | d10 | d12 | d20 |
---|---|---|---|---|---|---|
≤ 7 | 4 | 6 | 7 | 7 | 7 | 7 |
> 7 | 0 | 0 | 1 | 3 | 5 | 13 |
Total | 4 | 6 | 8 | 10 | 12 | 20 |
This can make the translation into an odds table very simple:
Odds for Rolls above 7
Outcome | d4 | d6 | d8 | d10 | d12 | d20 |
---|---|---|---|---|---|---|
> 7 | 0% (0/4) | 0% (0/6) | 12.5% (1/8) | 30% (3/10) | 41.667% (5/12) | 65% (13/20) |
Adding Dice Together
Disclaimer
Starting with this section, I strongly advise you use a calculator and spreadsheet software to keep track of numbers; or at the very least get a pencil + paper. These examples start simple, but numbers can get very big very quickly with very little warning.
Combining Two Dice
When you are instructed to Roll '2d6', these instructions are straightforward: take two d6 dice, roll them both, and take the Outcomes of each of these dice and add them together. However, because we now have 2 dice being rolled together, the odds of each individual Outcome are no longer equal, because each Outcome has a different number of Trials that can result in the same Outcome. In order to calculate odds for each outcome, we need to determine the odds of each possible Trial, and work out what Outcomes are associated with each Trial.
The method we'll use to do this is to construct a table, where each Column represents an Outcome from the first die, each Row represents an Outcome from the second die, and at the intersection of each row and column, we will report the combined Outcome and the number of Trials associated with that Outcome. The way we calculate the number of trials associated with a combined Outcome is to multiply together the number of Trials that represent each individual Outcome.
Each cell will contain the combined Outcome, and the number of Trials representing that Outcome in parenthesis.
Trials for 2d6 (d6 + d6)
Outcomes | d6→ | 1 | 2 | 3 | 4 | 5 | 6 | ||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
d6↓ | Trials | 1 | 1 | 1 | 1 | 1 | 1 | ||||||
1 | 1 | 2 | (1) | 3 | (1) | 4 | (1) | 5 | (1) | 6 | (1) | 7 | (1) |
2 | 1 | 3 | (1) | 4 | (1) | 5 | (1) | 6 | (1) | 7 | (1) | 8 | (1) |
3 | 1 | 4 | (1) | 5 | (1) | 6 | (1) | 7 | (1) | 8 | (1) | 9 | (1) |
4 | 1 | 5 | (1) | 6 | (1) | 7 | (1) | 8 | (1) | 9 | (1) | 10 | (1) |
5 | 1 | 6 | (1) | 7 | (1) | 8 | (1) | 9 | (1) | 10 | (1) | 11 | (1) |
6 | 1 | 7 | (1) | 8 | (1) | 9 | (1) | 10 | (1) | 11 | (1) | 12 | (1) |
Because we only care about what they add up to, and not the individual rolls that got us there, we can simplify this table into an array that only relates the Unique Combined Outcomes, and the number of Trials that results in each Outcome. To do this, we look at each cell of the table, and we sum together all the Trials associated with a given Outcome. Looking at the table, we see that there is only one cell with an Outcome of '2', and it only has one Trial. So we record Outcome '2' as having one Trial. Outcome '3' has two cells, each with one Trial, so we record '3' with two Trials.
Trials for 2d6 (Flattened)
Outcomes | Trials | Odds |
---|---|---|
2 | 1 | 2.778% (1/36) |
3 | 2 | 5.556% (2/36) |
4 | 3 | 8.333% (3/36) |
5 | 4 | 11.111% (4/36) |
6 | 5 | 13.889% (5/36) |
7 | 6 | 16.667% (6/36) |
8 | 5 | 13.889% (5/36) |
9 | 4 | 11.111% (4/36) |
10 | 3 | 8.333% (3/36) |
11 | 2 | 5.556% (2/36) |
12 | 1 | 2.778% (1/36) |
Total | 36 | 100% |
Like with single dice, we can get the odds of rolling above a given number, say '8':
Rolls Above 8
Outcomes | Trials | Odds |
---|---|---|
≤ 8 | 26 | 72.222% (26/36) |
> 8 | 10 | 27.778% (10/36) |
Total | 36 | 100% |
We can also calculate the average outcome by adding Outcomes, multiplied by their respective number of Trials, together: 2x1 + 3x2 + 4x3 + 5x4 + 6x5 + 7x6 + 8x5 + 9x4 + 10x3 + 11x2 + 12x1 == 252; 252 / 36 == 7.
Adding Modifiers
As mentioned before, we can treat Modifiers as dice with a single outcome and trial. So if we want to add a modifier to a Roll, we need only build a table with the modifier as the lone row and the original Roll as the columns:
Trials for d6 + 5
Outcomes | D6→ | 1 | 2 | 3 | 4 | 5 | 6 |
---|---|---|---|---|---|---|---|
+5↓ | Trials | 1 | 1 | 1 | 1 | 1 | 1 |
5 | 1 | 6 (1) | 7 (1) | 8 (1) | 9 (1) | 10 (1) | 11 (1) |
We then can flatten the table like before:
Trials for d6 + 5 (Flattened)
Outcomes | Trials | Odds |
---|---|---|
6 | 1 | 16.667% (1/6) |
7 | 1 | 16.667% (1/6) |
8 | 1 | 16.667% (1/6) |
9 | 1 | 16.667% (1/6) |
10 | 1 | 16.667% (1/6) |
11 | 1 | 16.667% (1/6) |
Total | 6 | 100% |
And then averaged: 6x1 + 7x1 + 8x1 + 9x1 + 10x1 + 11x1 == 51, 51/6 == 8.5.
Combining Three Dice
So the technique expressed above makes perfect sense when combining two dice together, but with three dice, we run into an issue: we would need to extend our table into a third dimension to adequately capture this third die and the trials associated with it.
If you are comfortable doing that, then all the power to you; however, for most people, this is impractical. Instead, we can get the results we want by combining the d6 array with the 2d6 array that we generated on the previous page. This will be far simpler than trying to extend into a third dimension.
Trials for 3d6 (2d6 + 1d6)
Outcomes | d6→ | 1 | 2 | 3 | 4 | 5 | 6 |
---|---|---|---|---|---|---|---|
2d6↓ | Trials | 1 | 1 | 1 | 1 | 1 | 1 |
2 | 1 | 3 (1) | 4 (1) | 5 (1) | 6 (1) | 7 (1) | 8 (1) |
3 | 2 | 4 (2) | 5 (2) | 6 (2) | 7 (2) | 8 (2) | 9 (2) |
4 | 3 | 5 (3) | 6 (3) | 7 (3) | 8 (3) | 9 (3) | 10 (3) |
5 | 4 | 6 (4) | 7 (4) | 8 (4) | 9 (4) | 10 (4) | 11 (4) |
6 | 5 | 7 (5) | 8 (5) | 9 (5) | 10 (5) | 11 (5) | 12 (5) |
7 | 6 | 8 (6) | 9 (6) | 10 (6) | 11 (6) | 12 (6) | 13 (6) |
8 | 5 | 9 (5) | 10 (5) | 11 (5) | 12 (5) | 13 (5) | 14 (5) |
9 | 4 | 10 (4) | 11 (4) | 12 (4) | 13 (4) | 14 (4) | 15 (4) |
10 | 3 | 11 (3) | 12 (3) | 13 (3) | 14 (3) | 15 (3) | 16 (3) |
11 | 2 | 12 (2) | 13 (2) | 14 (2) | 15 (2) | 16 (2) | 17 (2) |
12 | 1 | 13 (1) | 14 (1) | 15 (1) | 16 (1) | 17 (1) | 18 (1) |
This we can then flatten into a table using the same process we used to generate the 2d6 array. We count up each of the trials associated with a given Outcome, and set that as the number of Trials for that Outcome. '3' has one Trial, so it gets one. '4' has two cells, one of which has two Trials, and the other has one Trial, so '4' has three Trials in total. '5' has 3 cells, one with three Trials, one with two, and one with one, so '5' has six Trials in total. We continue this for each of the Outcomes until we have our final table.
Trials for 3d6 (Flattened)
Outcomes | Trials | Odds |
---|---|---|
3 | 1 | 0.463% (1/216) |
4 | 3 | 1.389% (3/216) |
5 | 6 | 2.778% (6/216) |
6 | 10 | 4.630% (10/216) |
7 | 15 | 6.944% (15/216) |
8 | 21 | 9.722% (21/216) |
9 | 25 | 11.574% (25/216) |
10 | 27 | 12.500% (27/216) |
11 | 27 | 12.500% (27/216) |
12 | 25 | 11.574% (25/216) |
13 | 21 | 9.722% (21/216) |
14 | 15 | 6.944% (15/216) |
15 | 10 | 4.630% (10/216) |
16 | 6 | 2.778% (6/216) |
17 | 3 | 1.389% (3/216) |
18 | 1 | 0.463% (1/216) |
Total | 216 | 100% |
Average: 10.500 | Median: 10 | 95th: [5,16] |
Exercise for the Reader: 9d6
Using the techniques already shown, can you construct an Array that contains the outcomes for a 9d6 roll? Hint: start by finding tables for 4d6 and 5d6. The former can be constructed from 2d6 + 2d6, the latter can use the 4d6 and add another d6 to it.
Also, as mentioned previously: spreadsheet software will help.
Preserving Special Notation
If you need to preserve special data about your rolls, you may do so:
Attack Roll with +5 Modifier
Outcome | Trials | Odds |
---|---|---|
6† | 1 | 5% |
7—24 | 18 (1 each) | 90% |
25* | 1 | 5% |
Total | 20 | 100% |
Other Ways to Combine Rolls
So far we have focused on adding Rolls together or counting Rolls. But there are a lot of other ways to combine together Rolls that are relevant in D&D. I'll list off a few examples and how we handle them in this system.
Advantage
Take two identical rolls, and build a table out of their respective arrays. Whichever Outcome is higher is the Outcome we use. I'll demonstrate with a d4 to keep the example simple, even though there aren't a lot of situations where a d4 would gain Advantage.
d4 Rolled with Advantage
Outcomes | d4→ | 1 | 2 | 3 | 4 |
---|---|---|---|---|---|
d4↓ | Trials | 1 | 1 | 1 | 1 |
1 | 1 | 1 (1) | 2 (1) | 3 (1) | 4 (1) |
2 | 1 | 2 (1) | 2 (1) | 3 (1) | 4 (1) |
3 | 1 | 3 (1) | 3 (1) | 3 (1) | 4 (1) |
4 | 1 | 4 (1) | 4 (1) | 4 (1) | 4 (1) |
Outcomes | Trials | Odds |
---|---|---|
1 | 1 | 6.25% (1/16) |
2 | 3 | 18.75% (3/16) |
3 | 5 | 31.25% (5/16) |
4 | 7 | 43.75% (7/16) |
Total | 16 | 100% |
Disadvantage
Disadvantage works the exact same way, but with differently allocated outcomes.
d4 Rolled with Disadvantage
Outcomes | d4→ | 1 | 2 | 3 | 4 |
---|---|---|---|---|---|
d4↓ | Trials | 1 | 1 | 1 | 1 |
1 | 1 | 1 (1) | 1 (1) | 1 (1) | 1 (1) |
2 | 1 | 1 (1) | 2 (1) | 2 (1) | 2 (1) |
3 | 1 | 1 (1) | 2 (1) | 3 (1) | 3 (1) |
4 | 1 | 1 (1) | 2 (1) | 3 (1) | 4 (1) |
Outcomes | Trials | Odds |
---|---|---|
1 | 7 | 43.75% (7/16) |
2 | 5 | 31.25% (5/16) |
3 | 3 | 18.75% (3/16) |
4 | 1 | 6.25% (1/16) |
Total | 16 | 100% |
Great Weapon Fighting Style
In 5th Edition D&D, a Martial class is allowed to take the Great Weapon Fighting Style, which has the following specification:
Great Weapon Fighting
When you roll a 1 or 2 on a damage die for an attack you make with a melee weapon that you are wielding with two hands, you can reroll the die and must use the new roll, even if the new roll is a 1 or a 2. The weapon must have the two-handed or versatile property for you to gain this benefit.
The way we can evaluate this kind of Roll in our model is with the following steps:
- Roll two dice, marking one of them as the first Roll, the other as the second Roll
- If the first Roll rolls a 3 or higher, the Outcome is the first Roll
- If the first Roll rolls a 2 or lower, the Outcome is the second Roll
We'll consider the Greatsword to properly evaluate the power of this feature (and to let us show what we've learned from previous sections!):
A single d6 die of a Greatsword
Outcomes | d6 #1→ | 1 | 2 | 3 | 4 | 5 | 6 |
---|---|---|---|---|---|---|---|
d6 #2↓ | Trials | 1 | 1 | 1 | 1 | 1 | 1 |
1 | 1 | 1 (1) | 1 (1) | 3 (1) | 4 (1) | 5 (1) | 6 (1) |
2 | 1 | 2 (1) | 2 (1) | 3 (1) | 4 (1) | 5 (1) | 6 (1) |
3 | 1 | 3 (1) | 3 (1) | 3 (1) | 4 (1) | 5 (1) | 6 (1) |
4 | 1 | 4 (1) | 4 (1) | 3 (1) | 4 (1) | 5 (1) | 6 (1) |
5 | 1 | 5 (1) | 5 (1) | 3 (1) | 4 (1) | 5 (1) | 6 (1) |
6 | 1 | 6 (1) | 6 (1) | 3 (1) | 4 (1) | 5 (1) | 6 (1) |
Outcomes | Trials | Odds |
---|---|---|
1 | 2 | 5.556% (2/36) |
2 | 2 | 5.556% (2/36) |
3 | 8 | 22.22% (8/36) |
4 | 8 | 22.22% (8/36) |
5 | 8 | 22.22% (8/36) |
6 | 8 | 22.22% (8/36) |
Total | 36 | 100% |
2d6 with Great Weapon Fighting Style
GWF | d6→ | 1 | 2 | 3 | 4 | 5 | 6 |
---|---|---|---|---|---|---|---|
d6↓ | Trials | 2 | 2 | 8 | 8 | 8 | 8 |
1 | 2 | 2 (4) | 3 (4) | 4 (16) | 5 (16) | 6 (16) | 7 (16) |
2 | 2 | 3 (4) | 4 (4) | 5 (16) | 6 (16) | 7 (16) | 8 (16) |
3 | 8 | 4 (16) | 5 (16) | 6 (64) | 7 (64) | 8 (64) | 9 (64) |
4 | 8 | 5 (16) | 6 (16) | 7 (64) | 8 (64) | 9 (64) | 10 (64) |
5 | 8 | 6 (16) | 7 (16) | 8 (64) | 9 (64) | 10 (64) | 11 (64) |
6 | 8 | 7 (16) | 8 (16) | 9 (64) | 10 (64) | 11 (64) | 12 (64) |
Outcomes | Trials | Odds |
---|---|---|
2 | 4 | 0.309% (4/1296) |
3 | 8 | 0.617% (8/1296) |
4 | 36 | 2.778% (36/1296) |
5 | 64 | 4.938% (64/1296) |
6 | 128 | 9.877% (128/1296) |
7 | 192 | 14.815% (192/1296) |
8 | 224 | 17.284% (224/1296) |
9 | 256 | 19.753% (256/1296) |
10 | 192 | 14.815% (192/1296) |
11 | 128 | 9.877% (128/1296) |
12 | 64 | 4.938% (64/1296) |
Total | 1296 | 100% |
Using this table, and our original 2d6 table, we can now compare their averages, and see how much higher the average is for the 2d6GWF Roll Vs. the regular 2d6 Roll.
Regular: 7
(2x1 + 3x2 + 4x3 + 5x4 + 6x5 + 7x6 + 8x5 + 9x4 + 10x3 + 11x2 + 12x1 == 252; 252 / 36 == 7)
GWF: 8.333
(2x4 + 3x8 + 4x36 + 5x64 + 6x128 + 7x192 + 8x224 + 9x256 + 10x192 + 11x128 + 12x64 == 10,800; 10,800 / 1296 == 8.333)
See that we've now started to enter the practical territory of our calculations: we're not just adding dice together for fun and science, we're actually applying this math towards finding out what kind of bonuses we're gaining to our damage Rolls.
Adding Mixed Dice
As you might have been able to conjecture, we're not limited to adding identical dice together. This technique for adding dice together works for any combination of dice, and any method of combining them.
Consider, for example, an Attack Roll with Bless (add 1d4 to all Attack Rolls and Saving Throws) added:
Attack Roll with Bless
Outcomes | Bless→ | 1 | 2 | 3 | 4 |
---|---|---|---|---|---|
Attack↓ | Trials | 1 | 1 | 1 | 1 |
1† | 1 | 2† (1) | 3† (1) | 4† (1) | 5† (1) |
2 | 1 | 3 (1) | 4 (1) | 5 (1) | 6 (1) |
3 | 1 | 4 (1) | 5 (1) | 6 (1) | 7 (1) |
4 | 1 | 5 (1) | 6 (1) | 7 (1) | 8 (1) |
5 | 1 | 6 (1) | 7 (1) | 8 (1) | 9 (1) |
6 | 1 | 7 (1) | 8 (1) | 9 (1) | 10 (1) |
7 | 1 | 8 (1) | 9 (1) | 10 (1) | 11 (1) |
8 | 1 | 9 (1) | 10 (1) | 11 (1) | 12 (1) |
9 | 1 | 10 (1) | 11 (1) | 12 (1) | 13 (1) |
10 | 1 | 11 (1) | 12 (1) | 13 (1) | 14 (1) |
11 | 1 | 12 (1) | 13 (1) | 14 (1) | 15 (1) |
12 | 1 | 13 (1) | 14 (1) | 15 (1) | 16 (1) |
13 | 1 | 14 (1) | 15 (1) | 16 (1) | 17 (1) |
14 | 1 | 15 (1) | 16 (1) | 17 (1) | 18 (1) |
15 | 1 | 16 (1) | 17 (1) | 18 (1) | 19 (1) |
16 | 1 | 17 (1) | 18 (1) | 19 (1) | 20 (1) |
17 | 1 | 18 (1) | 19 (1) | 20 (1) | 21 (1) |
18 | 1 | 19 (1) | 20 (1) | 21 (1) | 22 (1) |
19 | 1 | 20 (1) | 21 (1) | 22 (1) | 23 (1) |
20* | 1 | 21* (1) | 22* (1) | 23* (1) | 24* (1) |
When we enter the combination stage, we have a choice of whether to preserve the symbols for auto-miss and crit for this combined roll. We'll show both to see what they look like.
Attack Roll with Bless (Symbols Redacted)
Outcomes | Trials | Odds |
---|---|---|
2 | 1 | 1.25% (1/80) |
3 | 2 | 2.5% (1/80) |
4 | 3 | 3.75% (2/80) |
5—21 | 68 (4 each) | 85% (68/80)—5% each |
22 | 3 | 3.75% (3/80) |
23 | 2 | 2.5% (2/80) |
24 | 1 | 1.25% (1/80) |
Total | 80 | 100% |
Attack Roll with Bless (Symbols Preserved)
Outcomes | Trials | Odds |
---|---|---|
2† | 1 | 1.25% (1/80) |
3† | 1 | 1.25% (1/80) |
4† | 1 | 1.25% (1/80) |
5† | 1 | 1.25% (1/80) |
3 | 1 | 1.25% (1/80) |
4 | 2 | 2.5% (2/80) |
5 | 3 | 3.75% (3/80) |
6—20 | 60 (4 each) | 75% (60/80)—5% each |
21 | 3 | 3.75% (3/80) |
22 | 2 | 2.5% (2/80) |
23 | 1 | 1.25% (1/80) |
21* | 1 | 1.25% (1/80) |
22* | 1 | 1.25% (1/80) |
23* | 1 | 1.25% (1/80) |
24* | 1 | 1.25% (1/80) |
Total | 80 | 100% |
Moreover, this technique doesn't just work for any possible combination of dice, but for any combination of Rolls as well. Want to get the possible Outcomes of a Fireball and a Disintegrate fired in close proximity with each other? Those two rolls can be added together with this technique, using all the same methods outlined above.
Complex Rolls
If you've been following this document without any kind of spreadsheet software, here's the point where you're probably going to need to drop off. At this point, the numbers get astronomically large, and you're simply not going to be able to keep up if you're relying on hand-written notes.
Fractional Trials
Up to this point, all of our tables have been constructed with integer Trial counts. This is logical; after all, you can't have "half of an Outcome" from a Roll.
For most Rolls, this is simple and scales properly when trying to combine them. However, this approach won't work when we're dealing with Ternary Rolls: Rolls where we have three Rolls that need to be combined, but only two are combined to achieve any specific Outcome.
That's a pretty vague descriptor, so let's look at a more concrete example.
Sharran, Human Barbarian, Level 4
At Level 4, as a Barbarian, Sharran fights in combat by swinging a large Greataxe to cleave through her foes. She's a strong Human, stepping up with a hearty 18 Strength, giving her a +4 Strength modifier, along with a +2 modifier from proficiency. When she fights, she prefers to fight under the effects of her Rage, but she doesn't take advantage of her Reckless Attack feature (she wants to minimize damage against herself). Given this information, we ask the following question: what's her expected damage on an average attack under these conditions?
Right away, we're posed with some questions we need to resolve:
- What is the damage she deals on a successful hit?
- What is the damage she deals on a critical hit?
- How often does she hit?
- How do we relate all these things together?
We will tackle each of these questions in order.
The [Normal] Damage of a Greataxe
A Greataxe in 5th Edition D&D is represented by a d12. This only requires that we add a modifier to it, containing her Strength modifier, and the damage bonus gained from her Rage feature. This table is relatively straightforward:
Greataxe Damage Array, Normal
Outcomes | Trials | Odds |
---|---|---|
7—18 | 12 (1 each) | 100% (8.333% each) |
Total | 12 | 100% |
Average: 12.500 | Median: 12 | 95th: [7,18] |
The [Critical] Damage of a Greataxe
This table requires two parts: the result of a 2d12 Roll (from a critical hit) and the flat modifiers added to damage rolls (which is not doubled). The table is long, but relatively trivial to generate.
Greataxe Damage Array, Critical
Outcomes | Trials | Odds |
---|---|---|
8 | 1 | 0.694% (1/144) |
9 | 2 | 1.389% (2/144) |
10 | 3 | 2.083% (3/144) |
11 | 4 | 2.778% (4/144) |
12 | 5 | 3.472% (5/144) |
13 | 6 | 4.167% (6/144) |
14 | 7 | 4.861% (7/144) |
15 | 8 | 5.556% (8/144) |
16 | 9 | 6.250% (9/144) |
17 | 10 | 6.944% (10/144) |
18 | 11 | 7.639% (11/144) |
19 | 12 | 8.333% (12/144) |
20 | 11 | 7.639% (11/144) |
21 | 10 | 6.944% (10/144) |
22 | 9 | 6.250% (9/144) |
23 | 8 | 5.556% (8/144) |
24 | 7 | 4.861% (7/144) |
25 | 6 | 4.167% (6/144) |
26 | 5 | 3.472% (5/144) |
27 | 4 | 2.778% (4/144) |
28 | 3 | 2.083% (3/144) |
29 | 2 | 1.389% (2/144) |
30 | 1 | 0.694% (1/144) |
Total | 144 | 100% |
Average: 19.000 | Median: 19 | 95th: [10,28] |
How Often does she Hit?
Our struggle here is that we need to know the Armor Class of our target: only Attack Rolls that exceed or match the target's Armor Class constitute 'Hits'. Forthermore, a Natural 20 on the Attack Roll is a 'Critical Hit', and a Natural 1 is an automatic 'Miss'. The normal Attack Roll table (below) will need to be modified.
Sharran's Attack Roll Table
Outcome | Trials | Odds |
---|---|---|
7† | 1 | 5% |
8—25 | 18 (1 each) | 90% |
26* | 1 | 5% |
Total | 20 | 100% |
When we decide what Armor class to use for these calculations, it's probably wise to use several Armor Class values and generate tables for each of them. For our purposes, we'll use AC13, which is common for creatures that are an appropriate CR for her level.
Sharran's Attack Roll vs AC13
Outcome | Trials | Odds |
---|---|---|
Miss† | 6 | 30% |
Hit | 13 | 65% |
Crit* | 1 | 5% |
Total | 20 | 100% |
How do we Relate these Things Together?
Get your spreadsheets ready.
We need to build a table that contains all possible Outcomes, and the number of trials associated with each possible Outcome. But the Odds of any specific Trial associated with a Critical Hit are not the same as the Odds of a Trial from a Normal Hit. So our table needs to contain that information.
Going forwards, we will be treating the Attack Roll as a "Primary" Roll, and the Damage/Critical Rolls as "Secondary" Rolls. Whenever we multiply Outcomes and their Trials together, we will divide the number of Trials by the total number of Trials associated with the Secondary Roll from which it was retrieved.
For attacks which miss, it doesn't matter which Secondary Roll we use to feed the trials; we'll use an Outcome of '0' to represent it.
Yes, this is complicated. So let's look at this table.
Trials for Sharran's Attack + Damage Rolls
Outcomes | Attack→ | Miss† | Hit | Crit* |
---|---|---|---|---|
Damage↓ | Trials | 6 | 13 | 1 |
0† | 1/1 | 0 (6/1) | -- | -- |
7 | 1/12 | -- | 7 (13/12) | -- |
8 | 1/12 | -- | 8 (13/12) | -- |
9 | 1/12 | -- | 9 (13/12) | -- |
10 | 1/12 | -- | 10 (13/12) | -- |
11 | 1/12 | -- | 11 (13/12) | -- |
12 | 1/12 | -- | 12 (13/12) | -- |
13 | 1/12 | -- | 13 (13/12) | -- |
14 | 1/12 | -- | 14 (13/12) | -- |
15 | 1/12 | -- | 15 (13/12) | -- |
16 | 1/12 | -- | 16 (13/12) | -- |
17 | 1/12 | -- | 17 (13/12) | -- |
18 | 1/12 | -- | 18 (13/12) | -- |
8* | 1/144 | -- | -- | 8 (1/144) |
9* | 2/144 | -- | -- | 9 (2/144) |
10* | 3/144 | -- | -- | 10 (3/144) |
11* | 4/144 | -- | -- | 11 (4/144) |
12* | 5/144 | -- | -- | 12 (5/144) |
13* | 6/144 | -- | -- | 13 (6/144) |
14* | 7/144 | -- | -- | 14 (7/144) |
15* | 8/144 | -- | -- | 15 (8/144) |
16* | 9/144 | -- | -- | 16 (9/144) |
17* | 10/144 | -- | -- | 17 (10/144) |
18* | 11/144 | -- | -- | 18 (11/144) |
19* | 12/144 | -- | -- | 19 (12/144) |
20* | 11/144 | -- | -- | 20 (11/144) |
21* | 10/144 | -- | -- | 21 (10/144) |
22* | 9/144 | -- | -- | 22 (9/144) |
23* | 8/144 | -- | -- | 23 (8/144) |
24* | 7/144 | -- | -- | 24 (7/144) |
25* | 6/144 | -- | -- | 25 (6/144) |
26* | 5/144 | -- | -- | 26 (5/144) |
27* | 4/144 | -- | -- | 27 (4/144) |
28* | 3/144 | -- | -- | 28 (3/144) |
29* | 2/144 | -- | -- | 29 (2/144) |
30* | 1/144 | -- | -- | 30 (1/144) |
We then flatten this table, using the same techniques seen before.
Trials for Sharran's Attack + Damage Rolls (Flattened)
Outcomes | Trials | Odds |
---|---|---|
0 | 6 | 30.000% (6/20) |
7 | 13/12 | 5.417% (156/2880) |
8 | 13/12 + 1/144 | 5.451% (157/2880) |
9 | 13/12 + 2/144 | 5.486% (158/2880) |
10 | 13/12 + 3/144 | 5.521% (159/2880) |
11 | 13/12 + 4/144 | 5.556% (160/2880) |
12 | 13/12 + 5/144 | 5.590% (161/2880) |
13 | 13/12 + 6/144 | 5.625% (162/2880) |
14 | 13/12 + 7/144 | 5.660% (163/2880) |
15 | 13/12 + 8/144 | 5.694% (164/2880) |
16 | 13/12 + 9/144 | 5.729% (165/2880) |
17 | 13/12 + 10/144 | 5.764% (166/2880) |
18 | 13/12 + 11/144 | 5.799% (167/2880) |
19 | 12/144 | 0.417% (12/2880) |
20 | 11/144 | 0.382% (11/2880) |
21 | 10/144 | 0.347% (10/2880) |
22 | 9/144 | 0.313% (9/2880) |
23 | 8/144 | 0.278% (8/2880) |
24 | 7/144 | 0.243% (7/2880) |
25 | 6/144 | 0.208% (6/2880) |
26 | 5/144 | 0.174% (5/2880) |
27 | 4/144 | 0.139% (4/2880) |
28 | 3/144 | 0.104% (3/2880) |
29 | 2/144 | 0.069% (2/2880) |
30 | 1/144 | 0.035% (1/2880) |
Total | 20 | 100% |
Average: 9.075 | Median: 10 | 95th: [0,19] |
If we don't like the decision to include fractional Trials in the table, we can multiply all the Trials by the Least Common Divisor (144) to make every number a round integer number.
Trials for Sharran's Attack + Damage Rolls (Flattened & Normalized)
Outcomes | Trials | Odds |
---|---|---|
0 | 864 | 30.000% (864/2880) |
7 | 156 | 5.417% (156/2880) |
8 | 157 | 5.451% (157/2880) |
9 | 158 | 5.486% (158/2880) |
10 | 159 | 5.521% (159/2880) |
11 | 160 | 5.556% (160/2880) |
12 | 161 | 5.590% (161/2880) |
13 | 162 | 5.625% (162/2880) |
14 | 163 | 5.660% (163/2880) |
15 | 164 | 5.694% (164/2880) |
16 | 165 | 5.729% (165/2880) |
17 | 166 | 5.764% (166/2880) |
18 | 167 | 5.799% (167/2880) |
19 | 12 | 0.417% (12/2880) |
20 | 11 | 0.382% (11/2880) |
21 | 10 | 0.347% (10/2880) |
22 | 9 | 0.313% (9/2880) |
23 | 8 | 0.278% (8/2880) |
24 | 7 | 0.243% (7/2880) |
25 | 6 | 0.208% (6/2880) |
26 | 5 | 0.174% (5/2880) |
27 | 4 | 0.139% (4/2880) |
28 | 3 | 0.104% (3/2880) |
29 | 2 | 0.069% (2/2880) |
30 | 1 | 0.035% (1/2880) |
Total | 2880 | 100% |
Average: 9.075 | Median: 10 | 95th: [0,19] |
Using secondary Information
Back at the beginning of this document, in the "Motivation" section, we alluded to a species of "Strange" Rolls that are difficult to run statistics for. As of now, it's time to tackle this issue.
The motivating example is the Wild Magic Sorcerer level 18 feature, "Spell Bombardment", so we'll use it as an example.
Spell Bombardment
Beginning at 18th level, the harmful energy of your spells intensifies. When you roll damage for a spell and roll the highest number possible on any of the dice, choose one of those dice, roll it again and add that roll to the damage.
Consider a spell that deals 2d6 damage, having this feature applied to it. As we've seen from previous attempts to generate a 2d6 table, there are multiple ways to reach an Outcome of '7', but only 2 of those ways involve rolling a '6' on either of the dice. So clearly, simply generating a 2d6 table isn't going to cut it; we need to preserve information about how we arrived at that Outcome. So now our Outcome consists of two parts: the rolled number from the dice, and the size of the largest die that rolled its own maximum. We will represent this in the table as [7,6], or [7,-] if neither die rolled its maximum. For 2d6, that can only be a '6', but we'll see in later examples why it's important to not simply keep a binary value.
NOTE: I've omitted Trial #'s from this table to fit it within a single column. By this point, I hope we can infer that the # of trials for each cell is just 1.
Trials for 2d6 (Spell Bombardment)
Outcomes | d6→ | 1 | 2 | 3 | 4 | 5 | 6 | ||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
d6↓ | Trials | 1 | 1 | 1 | 1 | 1 | 1 | ||||||
1 | 1 | [2,-] | [3,-] | [4,-] | [5,-] | [6,-] | [7,6] | ||||||
2 | 1 | [3,-] | [4,-] | [5,-] | [6,-] | [7,-] | [8,6] | ||||||
3 | 1 | [4,-] | [5,-] | [6,-] | [7,-] | [8,-] | [9,6] | ||||||
4 | 1 | [5,-] | [6,-] | [7,-] | [8,-] | [9,-] | [10,6] | ||||||
5 | 1 | [6,-] | [7,-] | [8,-] | [9,-] | [10,-] | [11,6] | ||||||
6 | 1 | [7,6] | [8,6] | [9,6] | [10,6] | [11,6] | [12,6] |
Outcomes | Trials | Odds |
---|---|---|
[2,-] | 1 | 2.778% (1/36) |
[3,-] | 2 | 5.556% (2/36) |
[4,-] | 3 | 8.333% (3/36) |
[5,-] | 4 | 11.111% (4/36) |
[6,-] | 5 | 13.889% (5/36) |
[7,-] | 4 | 11.111% (4/36) |
[7,6] | 2 | 5.556% (2/36) |
[8,-] | 3 | 8.333% (3/36) |
[8,6] | 2 | 5.556% (2/36) |
[9,-] | 2 | 5.556% (2/36) |
[9,6] | 2 | 5.556% (2/36) |
[10,-] | 1 | 2.778% (1/36) |
[10,6] | 2 | 5.556% (2/36) |
[11,6] | 2 | 5.556% (2/36) |
[12,6] | 1 | 2.778% (1/36) |
Total | 36 | 100% |
We then take this array and combine it with a regular d6, only applying the trials where a '6' was rolled on at least one of the dice.
NOTE: Normally we would include the Outcomes, unmodified, for any Outcome that did not include a maximized roll. I've omitted them from this table for the sake of brevity. They would fit in the portions of the table that I've marked with [snip]. As a personal exercise, you may attempt to fill in these missing sections, though they're not terribly interesting.
Outcomes | 2d6→ | [snip] | [7,6] | [8,6] | [9,6] | [10,6] | [11,6] | [12,6] |
---|---|---|---|---|---|---|---|---|
1d6 | Trials | -- | 2 | 2 | 2 | 2 | 2 | 1 |
0 | 1 | [snip] | -- | -- | -- | -- | -- | -- |
1 | 1/6 | -- | 8 (2/6) | 9 (2/6) | 10 (2/6) | 11 (2/6) | 12 (2/6) | 13 (1/6) |
2 | 1/6 | -- | 9 (2/6) | 10 (2/6) | 11 (2/6) | 12 (2/6) | 13 (2/6) | 14 (1/6) |
3 | 1/6 | -- | 10 (2/6) | 11 (2/6) | 12 (2/6) | 13 (2/6) | 14 (2/6) | 15 (1/6) |
4 | 1/6 | -- | 11 (2/6) | 12 (2/6) | 13 (2/6) | 14 (2/6) | 15 (2/6) | 16 (1/6) |
5 | 1/6 | -- | 12 (2/6) | 13 (2/6) | 14 (2/6) | 15 (2/6) | 16 (2/6) | 17 (1/6) |
6 | 1/6 | -- | 13 (2/6) | 14 (2/6) | 15 (2/6) | 16 (2/6) | 17 (2/6) | 18 (1/6) |
We then add these outcomes to the original array, ditching the extra information about what the highest roll was, to get our final Array.
2d6 w/Spell Bombardment Feature
Outcomes | Trials | Odds |
---|---|---|
2 | 1 | 2.778% (1/36) |
3 | 2 | 5.556% (2/36) |
4 | 3 | 8.333% (3/36) |
5 | 4 | 11.111% (4/36) |
6 | 5 | 13.889% (5/36) |
7 | 4 | 11.111% (4/36) |
8 | 3 + 2/6 | 9.259% (20/216) |
9 | 2 + 4/6 | 7.407% (16/216) |
10 | 1 + 6/6 | 5.556% (12/216) |
11 | 8/6 | 3.704% (8/216) |
12 | 10/6 | 4.630% (10/216) |
13 | 11/6 | 5.093% (11/216) |
14 | 9/6 | 4.167% (9/216) |
15 | 7/6 | 3.241% (7/216) |
16 | 5/6 | 2.315% (5/216) |
17 | 3/6 | 1.389% (3/216) |
18 | 1/6 | 0.463% (1/216) |
Total | 36 | 100% |
Average: 8.069 | Median: 7 | 95th: [2,16] |
2d6 w/Spell Bombardment Feature (Normalized)
Outcomes | Trials | Odds |
---|---|---|
2 | 6 | 2.778% (6/216) |
3 | 12 | 5.556% (12/216) |
4 | 18 | 8.333% (18/216) |
5 | 24 | 11.111% (24/216) |
6 | 30 | 13.889% (30/216) |
7 | 24 | 11.111% (24/216) |
8 | 20 | 9.259% (20/216) |
9 | 16 | 7.407% (16/216) |
10 | 12 | 5.556% (12/216) |
11 | 8 | 3.704% (8/216) |
12 | 10 | 4.630% (10/216) |
13 | 11 | 5.093% (11/216) |
14 | 9 | 4.167% (9/216) |
15 | 7 | 3.241% (7/216) |
16 | 5 | 2.315% (5/216) |
17 | 3 | 1.389% (3/216) |
18 | 1 | 0.463% (1/216) |
Total | 216 | 100% |
Average: 8.069 | Median: 7 | 95th: [2,16] |
Extending to Multiple Die Types
So this example shakes out really easily because in a 2d6 roll, both dice are the same type. This is less true the moment we're dealing with mixed damage dice. For example, consider the spell Chaos Bolt:
Chaos Bolt
Make a ranged spell attack against the target. On a hit, the target takes 2d8 + 1d6 damage.
With Spell Bombardment, the caster might reroll a d6, or they might reroll a d8, or they might reroll neither.
Strictly speaking, if the caster is given a choice, they're allowed to choose either. For our purposes, we will assume the caster obeys the following strategy:
"I will always reroll the largest rolled die that rolled its maximum."
Any number of tables could be generated based on different strategies that respond to this scenario, and generating those other tables I leave open as an exercise to the reader.
NOTE: To keep the tables of a reasonable size, we're ignoring the part of the spell where additional attack rolls occur depending on the results of the d8 rolls. I leave generating those tables as an exercise to the reader.
2d8 Table
Outcomes | D8→ | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
---|---|---|---|---|---|---|---|---|---|
D8↓ | Trials | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
1 | 1 | [2,-] (1) | [3,-] (1) | [4,-] (1) | [5,-] (1) | [6,-] (1) | [7,-] (1) | [8,-] (1) | [9,8] (1) |
2 | 1 | [3,-] (1) | [4,-] (1) | [5,-] (1) | [6,-] (1) | [7,-] (1) | [8,-] (1) | [9,-] (1) | [10,8] (1) |
3 | 1 | [4,-] (1) | [5,-] (1) | [6,-] (1) | [7,-] (1) | [8,-] (1) | [9,-] (1) | [10,-] (1) | [11,8] (1) |
4 | 1 | [5,-] (1) | [6,-] (1) | [7,-] (1) | [8,-] (1) | [9,-] (1) | [10,-] (1) | [11,-] (1) | [12,8] (1) |
5 | 1 | [6,-] (1) | [7,-] (1) | [8,-] (1) | [9,-] (1) | [10,-] (1) | [11,-] (1) | [12,-] (1) | [13,8] (1) |
6 | 1 | [7,-] (1) | [8,-] (1) | [9,-] (1) | [10,-] (1) | [11,-] (1) | [12,-] (1) | [13,-] (1) | [14,8] (1) |
7 | 1 | [8,-] (1) | [9,-] (1) | [10,-] (1) | [11,-] (1) | [12,-] (1) | [13,-] (1) | [14,-] (1) | [15,8] (1) |
8 | 1 | [9,8] (1) | [10,8] (1) | [11,8] (1) | [12,8] (1) | [13,8] (1) | [14,8] (1) | [15,8] (1) | [16,8] (1) |
2d8 Array
Outcomes | Trials |
---|---|
[2,-] | 1 |
[3,-] | 2 |
[4,-] | 3 |
[5,-] | 4 |
[6,-] | 5 |
[7,-] | 6 |
[8,-] | 7 |
[9,-] | 6 |
[9,8] | 2 |
[10,-] | 5 |
[10,8] | 2 |
Outcomes | Trials |
---|---|
[11,-] | 4 |
[11,8] | 2 |
[12,-] | 3 |
[12,8] | 2 |
[13,-] | 2 |
[13,8] | 2 |
[14,-] | 1 |
[14,8] | 2 |
[15,8] | 2 |
[16,8] | 1 |
Total | 64 |
When we combine with the d6 array, we make the following determinations:
- If neither axis of the table produced a maximized roll, then we preserve that into the new value
- If one axis of the table produced a maximized roll, we use that as the maximized roll.
- If both axis' produced maximized rolls, then we use whichever one is larger.
2d8 + 1d6 Table
Outcomes | 1d6→ | 1 | 2 | 3 | 4 | 5 | 6 |
---|---|---|---|---|---|---|---|
2d8↓ | Trials | 1 | 1 | 1 | 1 | 1 | 1 |
[2,-] | 1 | [3,-] (1) | [4,-] (1) | [5,-] (1) | [6,-] (1) | [7,-] (1) | [8,6] (1) |
[3,-] | 2 | [4,-] (2) | [5,-] (2) | [6,-] (2) | [7,-] (2) | [8,-] (2) | [9,6] (2) |
[4,-] | 3 | [5,-] (3) | [6,-] (3) | [7,-] (3) | [8,-] (3) | [9,-] (3) | [10,6] (3) |
[5,-] | 4 | [6,-] (4) | [7,-] (4) | [8,-] (4) | [9,-] (4) | [10,-] (4) | [11,6] (4) |
[6,-] | 5 | [7,-] (5) | [8,-] (5) | [9,-] (5) | [10,-] (5) | [11,-] (5) | [12,6] (5) |
[7,-] | 6 | [8,-] (6) | [9,-] (6) | [10,-] (6) | [11,-] (6) | [12,-] (6) | [13,6] (6) |
[8,-] | 7 | [9,-] (7) | [10,-] (7) | [11,-] (7) | [12,-] (7) | [13,-] (7) | [14,6] (7) |
[9,-] | 6 | [10,-] (6) | [11,-] (6) | [12,-] (6) | [13,-] (6) | [14,-] (6) | [15,6] (6) |
[9,8] | 2 | [10,8] (2) | [11,8] (2) | [12,8] (2) | [13,8] (2) | [14,8] (2) | [15,8] (2) |
[10,-] | 5 | [11,-] (5) | [12,-] (5) | [13,-] (5) | [14,-] (5) | [15,-] (5) | [16,6] (5) |
[10,8] | 2 | [11,8] (2) | [12,8] (2) | [13,8] (2) | [14,8] (2) | [15,8] (2) | [16,8] (2) |
[11,-] | 4 | [12,-] (4) | [13,-] (4) | [14,-] (4) | [15,-] (4) | [16,-] (4) | [17,6] (4) |
[11,8] | 2 | [12,8] (2) | [13,8] (2) | [14,8] (2) | [15,8] (2) | [16,8] (2) | [17,8] (2) |
[12,-] | 3 | [13,-] (3) | [14,-] (3) | [15,-] (3) | [16,-] (3) | [17,-] (3) | [18,6] (3) |
[12,8] | 2 | [13,8] (2) | [14,8] (2) | [15,8] (2) | [16,8] (2) | [17,8] (2) | [18,8] (2) |
[13,-] | 2 | [14,-] (2) | [15,-] (2) | [16,-] (2) | [17,-] (2) | [18,-] (2) | [19,6] (2) |
[13,8] | 2 | [14,8] (2) | [15,8] (2) | [16,8] (2) | [17,8] (2) | [18,8] (2) | [19,8] (2) |
[14,-] | 1 | [15,-] (1) | [16,-] (1) | [17,-] (1) | [18,-] (1) | [19,-] (1) | [20,6] (1) |
[14,8] | 2 | [15,8] (2) | [16,8] (2) | [17,8] (2) | [18,8] (2) | [19,8] (2) | [20,8] (2) |
[15,8] | 2 | [16,8] (2) | [17,8] (2) | [18,8] (2) | [19,8] (2) | [20,8] (2) | [21,8] (2) |
[16,8] | 1 | [17,8] (1) | [18,8] (1) | [19,8] (1) | [20,8] (1) | [21,8] (1) | [22,8] (1) |
2d8 + 1d6 Array
Outcomes | Trials |
---|---|
[3,-] | 1 |
[4,-] | 3 |
[5,-] | 6 |
[6,-] | 10 |
[7,-] | 15 |
[8,-] | 20 |
[8,6] | 1 |
[9,-] | 25 |
[9,6] | 2 |
[10,-] | 28 |
[10,6] | 3 |
[10,8] | 2 |
[11,-] | 29 |
[11,6] | 4 |
[11,8] | 4 |
[12,-] | 28 |
[12,6] | 5 |
[12,8] | 6 |
[13,-] | 25 |
[13,6] | 6 |
[13,8] | 8 |
[14,-] | 20 |
Outcomes | Trials |
---|---|
[14,6] | 7 |
[14,8] | 10 |
[15,-] | 15 |
[15,6] | 6 |
[15,8] | 12 |
[16,-] | 10 |
[16,6] | 5 |
[16,8] | 12 |
[17,-] | 6 |
[17,6] | 4 |
[17,8] | 11 |
[18,-] | 3 |
[18,6] | 3 |
[18,8] | 9 |
[19,-] | 1 |
[19,6] | 2 |
[19,8] | 7 |
[20,6] | 1 |
[20,8] | 5 |
[21,8] | 3 |
[22,8] | 1 |
Total: | 384 |
The following table is going to contain a lot of truncated information. For our purposes, if you see the following:
Outcomes | Final Die→ | 0 | [d6] | [d8] |
---|---|---|---|---|
2d8+1d6↓ | Trials | 1 | 1/6 each | 1/8 each |
[8,6] | 1 | -- | 8+1d6 (1/6 each) | -- |
You should interpret the [d6] column as though it actually looks like this:
Outcomes | Final Die→ | 0 | 1 | 2 | 3 | 4 | 5 | 6 | [d8] |
---|---|---|---|---|---|---|---|---|---|
2d8+1d6↓ | Trials | 1 | 1/6 | 1/6 | 1/6 | 1/6 | 1/6 | 1/6 | 1/8 each |
[8,6] | 1 | -- | 9 (1/6) | 10 (1/6) | 11 (1/6) | 12 (1/6) | 13 (1/6) | 14 (1/6) | -- |
Do the same for the [d8] column as well. This is going to allow me to save space, since this table is extremely large and otherwise would not fit on one page.
Outcomes | Final Die→ | 0 | [d6] | [d8] |
---|---|---|---|---|
2d8+1d6↓ | Trials | 1 | 1/6 each | 1/8 each |
[X,-] | 1 | [snip] | -- | -- |
[8,6] | 1 | -- | 8+1d6 (1/6 each) | -- |
[9,6] | 2 | -- | 9+1d6 (2/6 each) | -- |
[10,6] | 3 | -- | 10+1d6 (3/6 each) | -- |
[10,8] | 2 | -- | -- | 10+1d8 (2/8 each) |
[11,6] | 4 | -- | 11+1d6 (4/6 each) | -- |
[11,8] | 4 | -- | -- | 11+1d8 (4/8 each) |
[12,6] | 5 | -- | 12+1d6 (5/6 each) | -- |
[12,8] | 6 | -- | -- | 12+1d8 (6/8 each) |
[13,6] | 6 | -- | 13+1d6 (6/6 each) | -- |
[13,8] | 8 | -- | -- | 13+1d8 (8/8 each) |
[14,6] | 7 | -- | 14+1d6 (7/6 each) | -- |
[14,8] | 10 | -- | -- | 14+1d8 (10/8 each) |
[15,6] | 6 | -- | 15+1d6 (6/6 each) | -- |
[15,8] | 12 | -- | -- | 15+1d8 (12/8 each) |
[16,6] | 5 | -- | 16+1d6 (5/6 each) | -- |
[16,8] | 12 | -- | -- | 16+1d8 (12/8 each) |
[17,6] | 4 | -- | 17+1d6 (4/6 each) | -- |
[17,8] | 11 | -- | -- | 17+1d8 (11/8 each) |
[18,6] | 3 | -- | 18+1d6 (3/6 each) | -- |
[18,8] | 9 | -- | -- | 18+1d8 (9/8 each) |
[19,6] | 2 | -- | 19+1d6 (2/6 each) | -- |
[19,8] | 7 | -- | -- | 19+1d8 (7/8 each) |
[20,6] | 1 | -- | 20+1d6 (1/6 each) | -- |
[20,8] | 5 | -- | -- | 20+1d8 (5/8 each) |
[21,8] | 3 | -- | -- | 21+1d8 (3/8 each) |
[22,8] | 1 | -- | -- | 22+1d8 (1/8 each) |
2d8+1d6 w/ Spell Bombardment (Normalized)
I've already normalized the # of trials to reduce the number of tables generated. Divide all the Trials by 24 if you want the unnormalized trials that would have been generated in the intermediate step after evaluating the previous table into an array.
Outcomes | Trials | Odds |
---|---|---|
3 | 24 | 0.260% (24/9216) |
4 | 72 | 0.781% (72/9216) |
5 | 144 | 1.563% (144/9216) |
6 | 240 | 2.604% (240/9216) |
7 | 360 | 3.906% (360/9216) |
8 | 480 | 5.208% (480/9216) |
9 | 604 | 6.554% (604/9216) |
10 | 684 | 7.422% (684/9216) |
11 | 726 | 7.878% (726/9216) |
12 | 730 | 7.921% (730/9216) |
13 | 696 | 7.552% (696/9216) |
14 | 624 | 6.771% (624/9216) |
15 | 558 | 6.055% (558/9216) |
16 | 490 | 5.317% (490/9216) |
17 | 438 | 4.753% (438/9216) |
18 | 399 | 4.329% (399/9216) |
19 | 364 | 3.950% (364/9216) |
20 | 333 | 3.613% (333/9216) |
21 | 306 | 3.320% (306/9216) |
22 | 267 | 2.897% (267/9216) |
23 | 220 | 2.387% (220/9216) |
24 | 168 | 1.823% (168/9216) |
25 | 120 | 1.302% (120/9216) |
26 | 79 | 0.857% (79/9216) |
27 | 48 | 0.521% (48/9216) |
28 | 27 | 0.293% (27/9216) |
29 | 12 | 0.130% (12/9216) |
30 | 3 | 0.033% (3/9216) |
Total | 9216 | 100% |
Average: 14.001 | Median: 13 | 95th: [5,25] |
Appendix
Useful Arrays
Arrays that are highly commonly used will be placed here. As an exercise to the reader, spend some time working out how to derive these tables yourself.
Advantage: d20
Outcomes | Trials | Odds |
---|---|---|
1 | 1 | 0.25% (1/400) |
2 | 3 | 0.75% (3/400) |
3 | 5 | 1.25% (5/400) |
4 | 7 | 1.75% (7/400) |
5 | 9 | 2.25% (9/400) |
6 | 11 | 2.75% (11/400) |
7 | 13 | 3.25% (13/400) |
8 | 15 | 3.75% (15/400) |
9 | 17 | 4.25% (17/400) |
10 | 19 | 4.75% (19/400) |
11 | 21 | 5.25% (21/400) |
12 | 23 | 5.75% (23/400) |
13 | 25 | 6.25% (25/400) |
14 | 27 | 6.75% (27/400) |
15 | 29 | 7.25% (29/400) |
16 | 31 | 7.75% (31/400) |
17 | 33 | 8.25% (33/400) |
18 | 35 | 8.75% (35/400) |
19 | 37 | 9.25% (37/400) |
20 | 39 | 9.75% (39/400) |
Total | 400 | 100% |
Average: 13.825 | Median: 15 | 95th: [4,20] |
Disadvantage: d20
Outcomes | Trials | Odds |
---|---|---|
1 | 39 | 9.75% (39/400) |
2 | 37 | 9.25% (37/400) |
3 | 35 | 8.75% (35/400) |
4 | 33 | 8.25% (33/400) |
5 | 31 | 7.75% (31/400) |
6 | 29 | 7.25% (29/400) |
7 | 27 | 6.75% (27/400) |
8 | 25 | 6.25% (25/400) |
9 | 23 | 5.75% (23/400) |
10 | 21 | 5.25% (21/400) |
11 | 19 | 4.75% (19/400) |
12 | 17 | 4.25% (17/400) |
13 | 15 | 3.75% (15/400) |
14 | 13 | 3.25% (13/400) |
15 | 11 | 2.75% (11/400) |
16 | 9 | 2.25% (9/400) |
17 | 7 | 1.75% (7/400) |
18 | 5 | 1.25% (5/400) |
19 | 3 | 0.75% (3/400) |
20 | 1 | 0.25% (1/400) |
Total | 400 | 100% |
Average: 7.175 | Median: 6 | 95th: [1,17] |
Advantage w/ Elven Accuracy: d20
Because the Elven Accuracy Feat has some unusual edge-case behavior, it's worth elaborating on how these calculations are being made.
Elven Accuracy
[...]
Whenever you have advantage on an attack roll using Dexterity, Intelligence, Wisdom, or Charisma, you can reroll one of the dice once.
If a player handles this roll by only ever rerolling the lowest die, then this Roll becomes equivalent to this rewording:
Elven Accuracy (Reworded to match Optimal Behavior)
Whenever you have advantage on an attack roll using Dexterity, Intelligence, Wisdom, or Charisma, you instead roll 3 dice and use the highest value.
So in this situation, the array generated by this strategy can be represented by the following table:
Elven Accuracy (Optimal Strategy)
Outcomes | Trials | Odds |
---|---|---|
1 | 1 | 0.013% (1/8000) |
2 | 7 | 0.088% (7/8000) |
3 | 19 | 0.238% (19/8000) |
4 | 37 | 0.463% (37/8000) |
5 | 61 | 0.763% (61/8000) |
6 | 91 | 1.138% (91/8000) |
7 | 127 | 1.588% (127/8000) |
8 | 169 | 2.113% (169/8000) |
9 | 217 | 2.713% (217/8000) |
10 | 271 | 3.388% (271/8000) |
11 | 331 | 4.138% (331/8000) |
12 | 397 | 4.963% (397/8000) |
13 | 469 | 5.863% (469/8000) |
14 | 547 | 6.838% (547/8000) |
15 | 631 | 7.888% (631/8000) |
16 | 721 | 9.013% (721/8000) |
17 | 817 | 10.213% (817/8000) |
18 | 919 | 11.488% (919/8000) |
19 | 1027 | 12.838% (1027/8000) |
20 | 1141 | 14.263% (1141/8000) |
Total | 8000 | 100% |
Average: 15.488 | Median: 16 | 95th: [6,20] |
However, because the player is allowed to choose their strategy, they could instead choose to reroll the higher die. This is the table that represents that strategy instead:
Elven Accuracy (Alternate Strategy)
Outcomes | Trials | Odds |
---|---|---|
1 | 39 | 0.488% (39/8000) |
2 | 113 | 1.413% (113/8000) |
3 | 181 | 2.262% (181/8000) |
4 | 243 | 3.038% (243/8000) |
5 | 299 | 3.738% (299/8000) |
6 | 349 | 4.363% (349/8000) |
7 | 393 | 4.913% (393/8000) |
8 | 431 | 5.388% (431/8000) |
9 | 463 | 5.788% (463/8000) |
10 | 489 | 6.113% (489/8000) |
11 | 509 | 6.363% (509/8000) |
12 | 523 | 6.538% (523/8000) |
13 | 531 | 6.638% (531/8000) |
14 | 533 | 6.663% (533/8000) |
15 | 529 | 6.613% (529/8000) |
16 | 519 | 6.488% (519/8000) |
17 | 503 | 6.288% (503/8000) |
18 | 481 | 6.013% (481/8000) |
19 | 453 | 5.663% (453/8000) |
20 | 419 | 5.238% (419/8000) |
Total | 8000 | 100% |
Average: 12.163 | Median: 12 | 95th: [3,20] |
Roll 3, take the Middle (d20)
Outcomes | Trials | Odds |
---|---|---|
1 | 58 | 0.725% (58/8000) |
2 | 166 | 2.075% (166/8000) |
3 | 262 | 3.275% (262/8000) |
4 | 346 | 4.325% (346/8000) |
5 | 418 | 5.225% (418/8000) |
6 | 478 | 5.975% (478/8000) |
7 | 526 | 6.575% (526/8000) |
8 | 562 | 7.025% (562/8000) |
9 | 586 | 7.325% (586/8000) |
10 | 598 | 7.475% (598/8000) |
11 | 598 | 7.475% (598/8000) |
12 | 586 | 7.325% (586/8000) |
13 | 562 | 7.025% (562/8000) |
14 | 526 | 6.575% (526/8000) |
15 | 478 | 5.975% (478/8000) |
16 | 418 | 5.225% (418/8000) |
17 | 346 | 4.325% (346/8000) |
18 | 262 | 3.275% (262/8000) |
19 | 166 | 2.075% (166/8000) |
20 | 58 | 0.725% (58/8000) |
Total | 8000 | 100% |
Average: 10.500 | Median: 10 | 95th: [2,19] |
d20 Roll with Bless
Outcomes | Trials | Odds |
---|---|---|
2 | 1 | 1.250% (1/80) |
3 | 2 | 2.500% (2/80) |
4 | 3 | 3.750% (3/80) |
5 | 4 | 5.000% (4/80) |
6 | 4 | 5.000% (4/80) |
7 | 4 | 5.000% (4/80) |
8 | 4 | 5.000% (4/80) |
9 | 4 | 5.000% (4/80) |
10 | 4 | 5.000% (4/80) |
11 | 4 | 5.000% (4/80) |
12 | 4 | 5.000% (4/80) |
13 | 4 | 5.000% (4/80) |
14 | 4 | 5.000% (4/80) |
15 | 4 | 5.000% (4/80) |
16 | 4 | 5.000% (4/80) |
17 | 4 | 5.000% (4/80) |
18 | 4 | 5.000% (4/80) |
19 | 4 | 5.000% (4/80) |
20 | 4 | 5.000% (4/80) |
21 | 4 | 5.000% (4/80) |
22 | 3 | 3.750% (3/80) |
23 | 2 | 2.500% (2/80) |
24 | 1 | 1.250% (1/80) |
Total | 80 | 100% |
Average: 13.000 | Median: 13 | 95th: [3,23] |
Credits
This documentation was researched, tested, written, and edited by Xirema. Special Thanks to the members of the rpg.stackexchange chat rooms, who helped verify the prototype statistics that later formed this document.
This Document was formatted with the help of Homebrewery: https://homebrewery.naturalcrit.com/