Take the 2-minute tour ×
Board & Card Games Stack Exchange is a question and answer site for people who like playing board games, designing board games or modifying the rules of existing board games. It's 100% free, no registration required.

The Risk revised edition rules have a Major Reward that grants the defender a bonus defense die. This die will replace the lowest defender's die rolled (unless the bonus die is the lowest).

What are the expected troop losses for the Attackers and Defenders when the Attacker attacks with 3 troops, and you choose to roll a single Defense die and your bonus Defense die versus when you roll two Defense dice and your bonus Defense die?

I have worked out the math for the single Defense die plus bonus Defense die. This is the easiest calculation, because we only care about the highest die rolled for the attacker (out of 216 possibilites), and the highest die rolled for the defender (out of 36 possibilities).

            |Defender's high die and odds (1-6) |
+-----------+-----+-----+-----+-----+-----+-----+-----+
|           | 1/36| 3/36| 5/36| 7/36| 9/36|11/36|36/36|
+Attacker's +-----+-----+-----+-----+-----+-----++----+----+--------------+
|   High Die| (1) | (2) | (3) | (4) | (5) | (6) ||Wins|Loss|              |
+-------+---+-----+-----+-----+-----+-----+-----++----+----+--------------+
|  1/216|(1)|   1 |   3 |   5 |   7 |   9 |  11 ||  36|   0|   36 of 7776 |
+-------+---+-----+-----+-----+-----+-----+-----++----+----+--------------+
|  7/216|(2)|   7#|  21 |  35 |  49 |  63 |  77 || 245|   7|  252 of 7776 |
+-------+---+-----+-----+-----+-----+-----+-----++----+----+--------------+
| 19/216|(3)|  19#|  57#|  95 | 133 | 171 | 209 || 608|  76|  684 of 7776 |
+-------+---+-----+-----+-----+-----+-----+-----++----+----+--------------+
| 37/216|(4)|  37#| 111#| 185#| 259 | 333 | 407 || 999| 333| 1332 of 7776 |
+-------+---+-----+-----+-----+-----+-----+-----++----+----+--------------+
| 61/216|(5)|  61#| 183#| 305#| 427#| 549 | 671 ||1220| 976| 2196 of 7776 |
+-------+---+-----+-----+-----+-----+-----+-----++----+----+--------------+
| 91/216|(6)|  91#| 273#| 455#| 637#| 819#|1001 ||1001|2275| 3276 of 7776 |
+-------+---+-----+-----+-----+-----+-----+-----++----+----+--------------+
|216/216|                                       ||4109|3667| 7776 of 7776 |
+-------+                                       ++----+----+--------------+
Defender Wins 4109/7776 = 0.52842, expected losses per attack 0.47158 
Attacker Wins 3667/7776 = 0.47158, expected losses per attack 0.52842
Ratio of Defender Losses/Attacker Losses = 0.892%

In the 3 Attacker dice versus the 2 Defender dice plus 1 bonus dice, both players throw away their lowest die. So, all that is needed to calculate the losses is to calculate the chances of each two highest die rolls from three dice (out of 216), and then figure out the losses (although, the results are a little more complicated because you have a Win/Loss/Tie (each lose 1).

Defender Wins 0.47614, and ties 0.29308, expected losses 0.75463 troops
Attacker Wins 0.23077, and ties 0.29308, expected losses 1.24537 troops
Ratio of Defender Losses/Attacker Losses = 0.606
I will fill in the table later, but can anyone check my results?
share|improve this question

1 Answer 1

up vote 1 down vote accepted

I think your calculations look roughly correct (my calculations disagree at 4 decimal places, but I doubt you're using that many in an actual game!)

Here's my calculated probabilities for a single defence die (plus bonus die):

Defender wins 4109/7776: 0.528421
Attacker wins 3667/7776: 0.471579

Here's my calculated probabilites for two defence dice (plus bonus die):

Defender wins 22218/46656: 0.476209
Attacker wins 10767/46656: 0.230774
Ties 13671/46656: 0.293017

Since the sample space is only a few thousand dice rolls I wrote a python script to loop through all of them. Here's the code for the first calculation:

from itertools import *
a_score = 0
d_score = 0
for a1,a2,a3,d1,db in product(range(6), repeat=5):
    if max(d1,db) < max(a1,a2,a3):
        a_score += 1
    else:
        d_score += 1
print 'Defender wins %d/%d: %f'%(d_score, 6**5, float(d_score)/6**5)
print 'Attacker wins %d/%d: %f'%(a_score, 6**5, float(a_score)/6**5)

Here's the code for the second:

from itertools import *
a_score = 0
d_score = 0
tie_score = 0
for a1,a2,a3,d1,d2,db in product(range(6), repeat=6):
    a_dice = [a1,a2,a3]
    d_dice = [d1,d2,db]
    a_dice.sort(reverse=True)
    d_dice.sort(reverse=True)
    if d_dice[0] < a_dice[0] and d_dice[1] < a_dice[1]:
        a_score += 1
    elif d_dice[0] >= a_dice[0] and d_dice[1] >= a_dice[1]:
        d_score += 1
    else:
        tie_score += 1
print 'Defender wins %d/%d: %f'%(d_score, 6**6, float(d_score)/6**6)
print 'Attacker wins %d/%d: %f'%(a_score, 6**6, float(a_score)/6**6)
print 'Ties %d/%d: %f'%(tie_score, 6**6, float(tie_score)/6**6)
share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.