# Dice odds of Doubles on 2D6 + D4/D6/D8/D10/D12 and Odds of 1

I have this odd idea for a resolution system and it goes like this.

For every roll you will be rolling 2D6 + D*, depending on attributes, etc. against a fixed DC of 11. Rolling an 11 or better gets you 1 step toward a win. Rolling less gets the opposition 1 step closer to a win. But then there's other stuff:

1. Rolling X or better (15, perhaps) gets you an extra step toward a win.
2. Rolling a 1 on any die gets the opposition 1 closer to a win, regardless of the total, so 5,6, and 1 gets you a step toward a win and the opposition a step toward a win (this is a PCs roll all the dice and it's not a tug-o-war thing, more like opposing pools of hit points). Multiple 1s count as multiple "Hits" for the opposition and they are, at least in extended conflicts, independent of hits the player gets.
3. Rolling doubles on any dice gets you another step toward winning. Rolling triples gets you 2 steps.

My AnyDice skills are kind of weak, and I am asking a weird question. Or a set of questions:

1. I was able to get the chances of being able to get > 10 on all the rolls, and > 14 is something I can do to figure out where I should put the really good result. But I don't know how to get the odds of rolling a double or the odds of rolling a 1.
2. How much effect the size of the 3rd die has on the roll as a sense of character ability overall? I guess that chance of doubles is probably optimal on 3D6. So one of the things I really need to know is how much doubles are a factor overall, lest I do something like give characters significantly worse odds as they improve. D6 to D8 is probably a real sticking point here...
3. I also need to figure out the spread of scenarios, somehow, where the chance that I will gain a certain amount toward my win condition while the opposition gains toward theirs. I think that's everything.

# odds of doubles and triples

This addresses the odds of rolling doubles and triples on 2D6 + DX by counting outcomes.

### +D6

With 3D6 there are 63 = 216 possible outcomes. To get doubles there are 6 ways to roll the first die. The second die must match, so there is only 1 way. Then the third die must not match (or else you'd get triples), so there are 5 ways. But instead of doubling up the first and second, you could also double up the first and third, or second and third. So there is an additional factor of 3 ways to get doubles. $$(6\times1\times5) \times 3 = 90$$ The odds of doubles on 3D6 is 90/216 = 5/12 ~ 42%.

Only 6/216 = 1/36 ~ 3% are triples.

### +D4

If you add a non-D6, things get a bit trickier, but the same counting strategy will work.

With a D4 there are 6×6×4 = 144 total possible outcomes. To double a 1-4 there are 4 options for the first, 1 for the second, and 3 for the third. Or two ways to use the D4 to double, 4 for the first, 1 for the second and 5 for the third (which is one of the D6s). $$4\times1\times3 + 2\times(4\times1\times5) = 52$$ To double a 5 or 6, you can only use the two D6s. There are 2 options for the first, 1 for the second, and any of the 4 sides of the D4 works. $$2\times1\times4 = 8$$ So 60/144 = 5/12 ~ 42% are doubles.

And 4/144 = 1/36 ~ 3% are triples.

### +D8 or bigger

When adding a die bigger than a D6 you can double any number 1-6 on the third die. The same number of rolls will get doubles for any die bigger than 6, but the total number of possible outcomes will change depending on the size of the third die.

The total number of rolls is 6×6×X, where X is the third die.

To double the D6s: 6×1×(X-1) = ...

To double the DX: (6×1×5) × 2 = 60.

The odds of doubles are: $$\frac{6(X-1) + 60}{36X} = \frac{X + 9}{6 X}$$

This equation works for +D6 too, but not +D4.

There are always 6 ways to triple, but the total number of outcomes changes. So $$\\frac{1}{6X}\$$ are triples

### Summary

Extra die Double Triple
D4 42% 2.8%
D6 42% 2.8%
D8 35% 2.1%
D10 32% 1.7%
D12 29% 1.4%
D20 24% 0.8%

Doubles are a big factor. More than 1/4 of all rolls will get a success from doubles. Triples are rarer than a "natural 20". The loss of doubles on larger dice might be offset by the increased likelihood of rolling high.

The D4 and D6 aren't exactly the same. 3D6 is more likely to roll higher than 11 than 2D6+D4. Assuming double 1's counts as two fails and a success, the odds of double 1's on 2D6+D4 is slightly higher at 13/144 = 9% compared to 15/216 = 7% on 3D6.

• Thanks! That clarifies a lot. I am toying with the idea of making a gradient on the roll where hitting a higher DC nets a greater number of "Hits" - possibly using 11 - 13 as 1, 14 - 16 as 2, and 17+ as 3. This hasn't hit a table, yet, but I am looking for really dramatic state changes from dice and potentially a couple of different mechanical strategies players might be able to use. Aug 9, 2022 at 15:23

I think it's possible to represent your mechanic as net wins in AnyDice, but breaking it out as our wins vs. their wins will be trickier (or at least harder to see trends). That being said, my AnyDice Fu is lacking, so I took a stab at an exploration calculator/interface using (a slight abuse¹ of) dyce² and anydyce³. You can play around with it in your browser: [source]

If you're curious, the substantive code for the mechanic is in doubles_on_2d6_plus_d.py. The interface supports toggling your optional extra-target rule, as well as a toggle for an earlier-surfaced ambiguity called out by @Someone_Evil on whether to count each one that appears as a win for the opposition just in case anyone was interested in seeing how that affected outcomes. The "burst" graph shows net wins/losses, but there is a breakout of how often who got what below:

¹ dyce's histograms are collections of outcome/count pairs. For most things, dyce assumes that outcomes are numbers, but for a narrow set of operations, it tolerates other things. In this case, we exploit that tolerance to enumerate tuples (pairs) of outcomes (i.e., our wins and their wins).

² dyce is my Python dice probability library.

³ anydyce is my visualization layer for dyce meant as a rough stand-in for AnyDice.

• Since the ambiguity was clarified in a comment (admittedly only minutes before you posted) I've edited that into their question so should be free to clear up that particular point Aug 9, 2022 at 15:52
• Ah! Thanks! I'll leave it as-is because I'm lazy, erm, I mean in case the OP was curious about it as an alternative. 😉 Aug 9, 2022 at 16:57

There are two tricks needed to get this working in AnyDice. The first is casting your rolled dice to the sequence input of a function. This lets us treat it as a rolled pool and set up simple conditionals to test the various successes. The below code is probably compressible, but I don't think you'll be running into efficiency issues is this particular case.

The second is getting around AnyDice's lack of support for multivariable output. The simplest way is mapping the variables to separate digits of the output. Reconstituting back to the multivariable requires some attention, but is not very challenging.

function: roll A:s B:s against T:s {
R: 0
P: [sort {A, B}]
loop Q over T {if A+B >= Q {R: R+1}}
if A+B < 1@T {R:R + 10}
if 1@P = 2@P {R: R+1}
if 2@P = 3@P {R: R+1}
R: R + 10*[count 1 in P]
result: R
}

loop N over {4, 6, 8, 10, 12}
{ output [roll 2d6 1dN against {11, 15}] named "with d[N]"}


For the 2d6+1d4 roll you then get:

Our wins 0 Opposition 1 Opposition 2 Opposition 3 Opposition 4 Opposition
0 6.94% 26.39% 0 0
1 16.67% 17.36% 6.25% 9.03% 0
2 11.81% 2.78% 0 0 0.69%
3 2.08% 0 0 0 0

You can see the rest of the results here, and mess around by tweaking or toggling the conditionals in that code.