Risk (revised edition 2008): Is it better to roll 1 or 2 Defense dice with the Bonus Defense die Major Reward?
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) &lt; 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] &lt; a_dice[0] and d_dice[1] &lt; a_dice[1]:
        a_score += 1
    elif d_dice[0] &gt;= a_dice[0] and d_dice[1] &gt;= 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)