How to calculate the probabilities of outcomes, of 3d6 - drop lowest dice

447 Views Asked by At

I am currently doing a spot of game-design but I am held back by being only a novice in the arts of mathematics. Here is the problem:

I wish to calculate the probabilities of the eleven outcomes of rolling 3d6 but dropping the lowest dice. So it is like rolling 2d6 but with a significant bias for higher rolls.

When rolling 3d6, there are 216 different dice combinations. In order to get the outcome 2 (with 3d6-drop lowest), all 3 dice must be 1 (1, 1, 1) (Orelse we would be dropping a 1 in favour of a dice that doesn't show 1) the probability of getting the outcome 2, is therefore 1/216.

I can also tell that the probability of getting the outcome 12, is 16/216 since there are 16 different outcomes that result in 12. When rolling 3d6 there are 16 different outcomes that contain at least 2 6'es.

That said, counting out all the possible combinations seem like a very manual way to get these probabilities, that will be nearly impossible when it comes to the more likely outcomes, such as 7, 8 and 9...

What is a good method to actually figuring out what I want to know?

Outcomes:

2: 1/216

3: ??

4: ??

5: ??

6: ??

7: ??

8: ??

9: ??

10 ??

11: ??

12: 16/216

Edit: cleaning some small mistakes in my explanation

Edit2: Thank you Henry, there are 11 outcomes of course, not 12.

3

There are 3 best solutions below

0
On BEST ANSWER

I would like to close this question, as user @Jmoravitz put me on the track with For loops, and I see now how to easily get a computer to figure this out. Here is the full Python script if anyone is interested. It may be of use for other xdy drop z lowest (or even highest) dice:

print("in the case of 2d6:")
counters = {num: 0 for num in range(2, 13)}
total_outcomes = 0


for y in range(1, 7):
    for z in range(1, 7):
        numbers = [y, z]
        numbers.sort()  
        result = numbers[-1] + numbers[-2]
        if result in counters:
            counters[result] += 1
        total_outcomes += 1

for num, count in counters.items():
    percentage = (count / total_outcomes) * 100
    formatted_percentage = "{:.2f}".format(percentage)
    print(f"Chance for result {num}: {count} ({formatted_percentage}%)")

print("---------------------------------")



print("In the case of 3-drop-1:")
counters = {num: 0 for num in range(2, 13)}
total_outcomes = 0

for x in range(1, 7):
    for y in range(1, 7):
        for z in range(1, 7):
            numbers = [x, y, z]
            numbers.sort() 
            result = numbers[-1] + numbers[-2]  
            if result in counters:
                counters[result] += 1
            total_outcomes += 1

for num, count in counters.items():
    percentage = (count / total_outcomes) * 100
    formatted_percentage = "{:.2f}".format(percentage)
    print(f"Chance for result {num}: {count} ({formatted_percentage}%)")

This prints the following correct data:

in the case of 2d6:
Chance for result 2: 1 (2.78%)
Chance for result 3: 2 (5.56%)
Chance for result 4: 3 (8.33%)
Chance for result 5: 4 (11.11%)
Chance for result 6: 5 (13.89%)
Chance for result 7: 6 (16.67%)
Chance for result 8: 5 (13.89%)
Chance for result 9: 4 (11.11%)
Chance for result 10: 3 (8.33%)
Chance for result 11: 2 (5.56%)
Chance for result 12: 1 (2.78%)
---------------------------------
In the case of 3-drop-1:
Chance for result 2: 1 (0.46%)
Chance for result 3: 3 (1.39%)
Chance for result 4: 7 (3.24%)
Chance for result 5: 12 (5.56%)
Chance for result 6: 19 (8.80%)
Chance for result 7: 27 (12.50%)
Chance for result 8: 34 (15.74%)
Chance for result 9: 36 (16.67%)
Chance for result 10: 34 (15.74%)
Chance for result 11: 27 (12.50%)
Chance for result 12: 16 (7.41%)
0
On

I think you have to do a bunch of manual counting of different cases but you can simplify your work a bit.

First a result with 3 different values of the dice like 2, 3, 5 counts for 6 cases (out of the 216 total) due to reordering of the dice. A result with two different values counts for 3 cases, all three dice equal has no reordering so is only 1 case.

Let's look at the result for 4. You can get there in two ways, either the top two dice are 1 and 3 or the top two dice are 2 and 2. If the top 2 are 1 and 3, the lowest one needs to be 1, so 3,1,1 counts for 3 cases. The top two at 2,2 can arise as 2,2,2 (1 case) or 2,2,1 (3 cases). This gives a total of 7/216 cases where the top two dice sum to 4.

The other numbers are similar but contain more cases. I don't see a way to skip the tedious work.

Alternatively you write a small program or excel sheet to list all 216 cases and sum the top 2 dice.

0
On

If you want to count by hand, here is a suggestion for counting by cases.

I'm going to assume 3d6 is rolled by rolling one die three times, so there is no ambiguity about what we mean by "first" roll or "last" roll.

The first case is where one roll is lower than the other two. The lowest-value roll then cannot be greater than $5$, so there are five sub-cases, one for each value of the lowest-value roll. If the lowest-value roll has value $n$ then you have $6 - n$ possible values for each of the other two rolls.

Taking the relative order of those two rolls into account gives you $(6 - n)^2$ equally-likely pairs whose sum has a triangular distribution. (Basically like rolling two $(6 - n)$-sided dice, but the sums start at $2n + 2$ instead of $2$.)

Now consider permutations of the rolls that move the low roll but preserve the order of the other two rolls. There are three such permutations. This means each of the $(6 - n)^2$ pairs counted in the previous paragraph occurs $3$ times within the $216$ equally-likely sequences of three rolls. So take the distribution you computed in the previous paragraph and multiply all frequencies of sums by $3$.

The second case is where the lowest rolled number occurred exactly twice: two rolls are the same and the other roll is higher. That is, you did not get the same number three times, but you did not get the first case either.

Again there are five sub-cases. This time, if the lowest roll is $n$, there are only $6 - n$ possibilities for the high roll, each of which gives you a different sum. However, you have three permutations to count, depending on whether the high roll was the first, second, or third roll. So for each sub-case you have a uniform distribution across $6 - n$ sums with frequency $3$ for each sum.

Finally you have the case where all three rolls are the same. This produces each of the sums $2, 4, 6, 8, 10, 12$ exactly once each.

Altogether you have to compute $46$ frequencies under this method: $25$ for the first case, $15$ for the second case, and $6$ for the third case. Having written the frequencies in columns labeled $2$ to $12$ according to the resulting sums, add up the numbers in each column. This will give you the relative frequency of each sum over all cases. These relative frequencies must add up to $216$.

This is tedious enough that I would rather do it by spreadsheet than by hand. But it's far less tedious than listing $216$ separate cases, and I think less error-prone than a lot of other methods.