How to find the probability distributions for multiple dice rolls for dice with a differing number of sides

convolutiondiceprobabilityprobability theoryrandom variables

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.

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.