Calculating probabilities from d6 dice pool (Degenesis rules for botches and triggers)

anydicedegenesisdicestatistics

I'm trying to generate a complex probability table for a dice pool with between 1–14 D6. The table will contain the probability of success and of critical failure, given a number of D6 rolled and a difficulty level between 1–10.

Difficulty = Minimum number of successful rolls that must be obtained, where success is a roll of 4+ on one die (50% chance per die).

Degree of Success: if you succeed, you count the number of 6s rolled in the dice pool (up to 4). This determines the "level" of your success, where 0=minimally acceptable and 4=outstanding.

Critical Fail: This happens if you fail, and if you roll more 1s than 4s,5s,6s combined.

Automatic Success: If you roll more than 12 dice, every dice beyond the 12th is an automatic success (but does not count toward degree of success).

Here are my goals:

  • Calculate probability of overall success for N of dice in the pool between 1–14, and difficulty levels 1–10 (dice beyond 12th are automatic successes).
  • Calculate probability of botching for same N of dice 1–14 and levels of difficulty 1–10 (botching is when you fail and roll more 1s than 4,5,6s combined).
  • Extra credit goal: calculate probability of each level of success for every combination of N dice and difficulty level (level of success=N of 6s, conditional on succeeding).

Is there a neat way to accomplish these goals with combinatorics? Excel would be great, but maybe AnyDice or another program?

Best Answer

Spreadsheet at here

It's set for view only but you can make a copy for your own use from the file menu.

This isn't that hard to do exactly with combinatorics. The sheet is for 1-12 dice, for dice beyond 12 just lower the effective difficulty by the bonus dice

We can simplify the situation by breaking it down into "Do we succeed or fail" and then "Is this failure a critical failure" or "How many degrees is this success"?

Both of these are Bernoulli trials. Cell A2 you put the # of dice from 1-12, cell B2 you put the difficulty (subtracting any bonus successes you get for dice over 12)....that little bit can be added to the code easily if desired.

Formula explanations

Just doing the top cell for each one, the rest all copy down for the numbers of success

Cell B4: =IF(A4<=$A$2,BINOM.DIST(A4,$A$2,0.5,FALSE),0)

This first checks to see if the number in our 0-12 row makes sense for the # of dice we are rolling. If it does, then it gives the chance of exactly the number in A4's successes coming up out of the number of dice we are rolling, this is repeated down the column. If we are doing a number more than the number of dice possible, it gives 0

Cell C4= =IF(A4<$B$2,IF($A$2-A4>A4,BINOM.DIST(A4,$A$2-A4,1/3,TRUE),1))

This first checks to see if the # of 4,5,6s was below the difficulty threshold. If so, it is a failure and a potential botch.
It then checks to see if a botch is possible by making sure the number of failure dice is more than the number of success dice. If it is possible, it then checks to see if a botch DIDN'T occur. This will happen if the total number of 1's out of the failure dice was less than or equal to the number of successful dice. This is a cumulative distribution, each of the failure dice (Total # of dice-number successful) has a 1 in 3 chance of being a 1 (vs a 2 or 3). We check the probability that the total number of 1s is equal to or less than the number of successes rolled (a4). If so, not a botch. There's a 100% chance not a botch if there just aren't enough dice to overcome the numbers of successes (on the case of n=5, d=4, 3 successes means the most 1s you could have are 2), so to cover that case there's a default 1=100% not a botch.

I didn't bother to put error catching in for the "false" lines as false evaluates as 0, so it cancels later on any time it is used in multiplication.

Cell D4==IF(C4,1-C4,0)

anything other than 0 evaluates as true, so if there is a nonzero chance of it being a not botch, this calculates the botch as the complement event, 1-the botch percent. Otherwise we are in one of those false cases, so output 0 to make the math easier later on in cancelling excess rows not needed

Cell E4===IF($A$4<$B$2,B4*D4,0)

This first checks to make sure we are on a failure line. If so, it multiplies the botch percent * the percent chance of that particular outcome coming up in the first place, otherwise outputs 0

Cell F4==B4*C4

This gives the percentage of times that row of failures is a regular botch.

Cell G4==IF(A4<$B$2,0,B4)

This just puts a 0 in if that row is a failure and otherwise the percent chance if that row was a success

Cell H4 through L4,

These just multiply the chance of us being on that row on a success * the chance worked out later on for "if it were a success, how many degrees would it be"

Cell M4-P4, example M4==IF($A4<$B$2,0,BINOM.DIST(M$3,$A4,1/3,FALSE))

This first makes sure we are on a success (otherwise 0). If we are on a success, it does a Bernoulli frequency distribution on the number of successes we had, looking for the 1 in 3 chance that each successful die was a 6.

Cell Q4==IF($A4<$B$2,0,1-sum(M4:P4))

We get 4 or more if we aren't in the 0-3 column

Then the topline results are just summations.

Related Topic