Skip to content
Vamshi Jandhyala

Books · The Fiddler: Solutions

Chapter 36

Can You Take a “Risk”?

A Risk deck has 4242 territory cards: 1414 infantry, 1414 cavalry, and 1414 artillery. You are dealt three cards at random. You may trade them in if they are all the same kind or all three different kinds. What is the probability you can trade in?

The Fiddler, Zach Wissner-Gross, September 26, 2025(original post)

Solution

Out of (423)\binom{42}{3} equally likely hands, the tradeable ones are “all the same” (3(143)3\binom{14}{3} ways) or “all different” (14314^3 ways, one of each kind): P=3(143)+143(423)=1092+274411480=383611480=13741033.41%.P=\frac{3\binom{14}{3}+14^3}{\binom{42}{3}} =\frac{1092+2744}{11480}=\frac{3836}{11480}=\frac{137}{410}\approx\boxed{33.41\%}.

The computation

Build the 4242-card deck and run through every three-card hand, counting those that are all one kind or all three kinds. The exact fraction is 137410\tfrac{137}{410}.

from itertools import combinations
from math import comb
from fractions import Fraction as F
deck = [k for k in range(3) for _ in range(14)]        # 14 each of 3 kinds
tradeable = lambda h: len(set(h)) in (1, 3)        # all same, or all different
good = sum(tradeable(h) for h in combinations(deck, 3))
print(F(good, comb(42, 3)))                        # 137/410

Extra Credit

Now add two wildcards (each can stand for any kind), making 4444 cards. Drawing one at a time, how many cards on average until you first hold three you can trade in? (It is between 33 and 55, and it is not 44.)

Solution

A wildcard plus any two cards is always tradeable, so a non-tradeable hand contains no wildcard. With N3N\ge3 always and N5N\le5 always, E[N]=3+(423)3(143)143(443)+3(142)2(444)=3+764413244+248431357513.760.\begin{aligned} E[N]&=3+\frac{\binom{42}{3}-3\binom{14}{3}-14^3}{\binom{44}{3}} +\frac{3\binom{14}{2}^2}{\binom{44}{4}}\\ &=3+\frac{7644}{13244}+\frac{24843}{135751}\approx\boxed{3.760}. \end{aligned} (The source’s value is paywalled; this exact figure is my own.)

The computation

Deal from the real 4444-card deck (two wildcards included), drawing one at a time until some three of the cards in hand form a tradeable set, and average the draw count over millions of shuffles.

import numpy as np
from collections import Counter
deck = np.array([0]*14 + [1]*14 + [2]*14 + [3, 3])     # kind 3 = wildcard
def has_triple(h):
    cnt = Counter(h)
    return (cnt[3] >= 1 and len(h) >= 3          # wildcard plus any two
            or any(cnt[k] >= 3 for k in (0, 1, 2))    # three of a kind
            or (cnt[0] and cnt[1] and cnt[2]))        # one of each kind
rng = np.random.default_rng(0); M = 2_000_000; total = 0
for _ in range(M):
    rng.shuffle(deck); h = []
    for card in deck:
        h.append(int(card))
        if len(h) >= 3 and has_triple(h): break
    total += len(h)
print(round(total / M, 4))                # ~3.760