How do I find the probability distributions for multiple dice rolls for dice with a differing number of sides?

278 Views Asked by At

I have been learning how to play Dungeons and Dragons recently, and have bought my first set of dice.

The standard DnD dice are:

  • 1d4
  • 1d6
  • 1d8
  • 1d10
  • 1d10 × 10 [10, 20, 30... 90, 100]
  • 1d12
  • 1d20

I was thinking about inventive ways to determine successes or failures as a DM, and I came up with the Super Roll! A super roll is rolling all seven of the standard dice, and being asked to roll above a particular number. I think this limit should be constant when asked to make a super roll, but I need to determine what this limit should be. I therefore want to calculate the probability distribution so I can pick a limit with an appropriate chance of succeeding at a super roll.

I could simulate this with Python and get an approximation of the distribution, but where's the fun in that? I want to do this in a proper way and learn some maths along the way. But I've hit a wall.

Researching this, there is a lot of information about rolling multiple dice. But in every case they always roll dice with the same number of sides.

I watched 3Blue1Brown's video about convolutions where Grant begins by explaining how convolutions can be used to add two random variables. In his example, he selects two 6-sided dice.

He goes on to say how this becomes a useful tool if, for example, the weightings of these probabilities for a given side isn't uniform.

And he gives the formula for a discrete convolution:

$$(a * b)_{n} = \sum_{\substack{i,j \\ i+j=n}} a_{i}\cdot b_{j}$$

But I don't want this. My dice aren't biased, instead it is only the number of side that is changing.

I have worked through an example by hand using the sliding windows method to convolve two dice rolls, 1d4 with 1d6.

It worked, and I methodically calculated the probabilities P(X=x).

However in the video Grant then uses python to calculate a convolution. He convolves $(1,2,3) * (4,5,6) = (4,13,28,27,18)$.

For my example, 1d4 and 1d6. The convolution is $(1,2,3,4) * (1,2,3,4,5,6) = (1,4,10,20,30,40,43,38,24)$, or if I do it in the order I did for the sliding windows, $(1,2,3,4) * (6,5,4,3,2,1) = (6,17,32,50,40,30,20,11,4)$

And I don't see how this is helpful to my problem. What do I need to do here? How can I use convolutions to calculate all values of P(X=x).

Any help would be greatly appreciated.

1

There are 1 best solutions below

1
On BEST ANSWER

The entries are the frequencies of each face. For fair dice, each face will have the same frequency, which you'll typically want to set to 1. So d4 + d6 would be

$$ \left(1, 1, 1, 1\right) * \left(1, 1, 1, 1, 1, 1\right) = \left(1, 2, 3, 4, 4, 4, 3, 2, 1\right) $$

The result is effectively an unfair die, which you can then convolve with the next die in turn.