# What is the average benefit of this particular stats rolling scheme?

In one D&D campaign I played years ago, we had to roll our stats with the usual "roll 4D6 and drop lowest" rule, however with a special exception, that is, if all four dice had the same result, you got to keep them all.

So for example rolling 5, 5, 5, 5 would net you a 20 while a 5, 5, 5, 6 would be a 16.

What is the average advantage this rolling scheme would have given us?

• ♦ Reminder: We do not support answers in comments because comments do not support features like proper voting and the wiki-style editing that allow the community to vet, correct, and improve the content. Jun 19, 2017 at 20:28

The advantage in general is pretty low since the chance of that happening is small. The chance of rolling 4 identical numbers on d6s is $\frac{6}{6^4} = \frac{1}{216} \approx 0.46\%$. That would make the expected value of the roll rise by $\frac{3.5}{216}\approx0.016$ attribute points.

The more important effect is that there is an actual possibility of starting with a 24 in an attribute (or more with a racial bonus). Also there is no chance of starting with a 3. Whether this is something you want is up to you.

• Comments are not for extended discussion; this conversation has been moved to chat. Jun 19, 2017 at 22:42
• @JollyJoker Actually, the chance of at least one 24 attribute in a party of 6 is around 2.74% Jun 20, 2017 at 10:52
• @Szega ((4095/4096)^6)^6 ? Not sure what I'm doing wrong Jun 20, 2017 at 10:57
• The chance of getting at least one 24 is around 0.5%. With six players in a party, you have around 3% chance of at least one 24 in the party. Jun 20, 2017 at 11:28
• @JollyJoker No need to round that much :) 2.74% is more precise. Jun 20, 2017 at 12:57

To determine the effect from a qualitative perspective, I threw together a Scala script to brute force all of the combinations for both 4d6 drop lowest and your “keep quadruples” variant, and determine their sums:

val keepallsums = Array.tabulate(6,6,6,6)((w,x,y,z) => {
if (w == x && w == y && w == z) 4*(w+1)
else Array(w,x,y,z).sorted.drop(1).sum + 3
}).flatten.flatten.flatten

val sums = Array.tabulate(6,6,6,6)(Array(_,_,_,_).sorted.drop(1).sum + 3).flatten.flatten.flatten

val counts = Array.tabulate(25)(x => (x, keepallsums count (_ == x), sums count (_ == x)))

counts foreach (x => println(x._1 + " " + x._2 + " " + x._3))


This outputs a space separated data file. The first column is the possible ability score results, the second column is the number of dice combinations that can give that score with the variant, the third is the same for the traditional 4d6 drop lowest:

0 0 0
1 0 0
2 0 0
3 0 1
4 5 4
5 10 10
6 20 21
7 38 38
8 63 62
9 90 91
10 122 122
11 148 148
12 167 167
13 172 172
14 160 160
15 130 131
16 95 94
17 54 54
18 20 21
19 0 0
20 1 0
21 0 0
22 0 0
23 0 0
24 1 0


Already, we can confirm that using the variant there is no chance of starting with a 3 and a small but nonzero chance of starting with 20 or 24. Plotting this data yields two curves (purple is the variant, cyan is the normal 4d6 drop lowest): These curves are almost completely coincident. This variant rolling scheme, while interesting from a theoretical standpoint, does not raise the expected value of the stats significantly, but it does increase the variance and, most notably, the maximum.

Here's a quick AnyDice script to simulate this mechanic:

function: ROLL:s drop lowest {
result: {1..#ROLL-1}@ROLL
}
function: ROLL:s drop lowest unless all same {
if 1@ROLL = (#ROLL)@ROLL { result: ROLL }
result: {1..#ROLL-1}@ROLL
}
output [4d6 drop lowest] named "4d6 drop lowest"
output [4d6 drop lowest unless all same] named "4d6 drop lowest unless all same"


As you can tell from the output, the difference is negligible: the average number of points rolled using the ordinary "4d6 drop lowest" method is 12.2446, while the average using the modified method is 12.2608, a whopping 0.0162 points higher. The standard deviation (a measure of how "swingy" the results are) for the ordinary method is 2.8468 points, only 0.0165 points less than the 2.8634 points for the modified method.

Plotting both distributions together, the graphs overlap almost exactly: The most noticeable differences between the two methods are at the extreme tails of the distributions:

• The ordinary method has a 1/64 ≈ 0.077% chance of giving you only three points, if you happen to roll all ones. The modified method gives you four points in that case.

• The ordinary method cannot ever give you more than 18 points. With the modified method, you have a 0.077% chance of getting 20 points (by rolling all fives) and another 0.077% chance of getting 24 points (by rolling all sixes).

However, the chance of any of these cases happening is still tiny. In fact, the chance of any given 4d6 roll even triggering the "...unless all dice are the same" rule at all is only 1/63 ≈ 0.463%. Otherwise (with a probability of 99.537%) the two methods yield exactly the same results.

• Here is an alternate anydice script. Jun 19, 2017 at 20:34