Yahtzee Probability Calculator

ANALife Services AuthorityNational Calculator Authority›Yahtzee Probability Calculator

.calc-container { max-width: 640px; margin: 2rem 0; padding: 1.5rem; background: #fff; border: 1px solid #ddd; border-radius: 8px; box-shadow: 0 1px 3px rgba(0,0,0,0.06); font-family: system-ui, -apple-system, sans-serif; } .calc-container h3 { font-family: Georgia, serif; font-size: 1.15rem; color: #1a1a1a; margin-bottom: 1rem; padding-bottom: 0.5rem; border-bottom: 2px solid var(--ac, #3d5a80); } .calc-row { display: flex; align-items: center; gap: 0.75rem; margin-bottom: 0.75rem; flex-wrap: wrap; } .calc-row label { min-width: 160px; font-size: 0.9rem; color: #333; font-weight: 500; } .calc-row input[type="number"], .calc-row select { flex: 1; min-width: 120px; max-width: 200px; padding: 0.5rem 0.6rem; border: 1px solid #ccc; border-radius: 4px; font-size: 0.9rem; font-family: system-ui, sans-serif; color: #1a1a1a; background: #fafaf8; } .calc-row input:focus, .calc-row select:focus { outline: none; border-color: var(--ac, #3d5a80); box-shadow: 0 0 0 2px rgba(26,74,138,0.12); } .calc-row .unit { font-size: 0.82rem; color: #888; min-width: 30px; } .calc-btn { display: inline-block; margin-top: 0.5rem; padding: 0.55rem 1.5rem; background: var(--ac, #3d5a80); color: #fff; border: none; border-radius: 4px; font-size: 0.9rem; font-weight: 600; cursor: pointer; font-family: system-ui, sans-serif; } .calc-btn:hover { opacity: 0.9; } .calc-result { margin-top: 1.25rem; padding: 1rem 1.25rem; background: #f0f6fc; border-left: 3px solid var(--ac, #3d5a80); border-radius: 0 6px 6px 0; display: none; } .calc-result.visible { display: block; } .calc-result-label { font-size: 0.78rem; text-transform: uppercase; letter-spacing: 0.06em; color: #666; margin-bottom: 0.25rem; } .calc-result-value { font-size: 1.6rem; font-weight: 700; color: var(--ac, #3d5a80); } .calc-result-detail { font-size: 0.85rem; color: #555; margin-top: 0.5rem; line-height: 1.5; } .calc-note { margin-top: 1rem; font-size: 0.8rem; color: #888; font-style: italic; } .calc-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 0.75rem; margin-top: 0.75rem; } .calc-grid-item { padding: 0.6rem 0.8rem; background: #f8f9fa; border-radius: 4px; border: 1px solid #eee; } .calc-grid-item .label { font-size: 0.75rem; color: #888; text-transform: uppercase; letter-spacing: 0.04em; } .calc-grid-item .value { font-size: 1.1rem; font-weight: 600; color: #1a1a1a; } @media (max-width: 720px) { .calc-row { flex-direction: column; align-items: flex-start; gap: 0.3rem; } .calc-row label { min-width: auto; } .calc-row input[type="number"], .calc-row select { max-width: 100%; width: 100%; } .calc-grid { grid-template-columns: 1fr; } } .calc-chart { margin: 1rem 0; text-align: center; } .calc-chart svg { max-width: 100%; height: auto; } .calc-chart-legend { display: flex; flex-wrap: wrap; justify-content: center; gap: 0.6rem 1.2rem; margin-top: 0.6rem; font-size: 0.8rem; color: #555; } .calc-chart-legend span { display: inline-flex; align-items: center; gap: 0.3rem; } .calc-chart-legend i { display: inline-block; width: 10px; height: 10px; border-radius: 2px; font-style: normal; } .calc-related { max-width: 640px; margin: 2rem 0 1rem; padding: 1.25rem 1.5rem; background: #f8f9fa; border: 1px solid #e8e8e8; border-radius: 8px; } .calc-related h3 { font-family: Georgia, serif; font-size: 1rem; color: #1a1a1a; margin: 0 0 0.75rem; padding-bottom: 0.4rem; border-bottom: 2px solid var(--ac, #3d5a80); } .calc-related-list { list-style: none; padding: 0; margin: 0 0 0.75rem; display: grid; grid-template-columns: 1fr 1fr; gap: 0.4rem 1.5rem; } .calc-related-list li a { font-size: 0.88rem; color: var(--ac, #3d5a80); text-decoration: none; } .calc-related-list li a:hover { text-decoration: underline; } .calc-browse-all { margin: 0.5rem 0 0; font-size: 0.9rem; font-weight: 600; } .calc-browse-all a { color: var(--ac, #3d5a80); text-decoration: none; } .calc-browse-all a:hover { text-decoration: underline; } @media (max-width: 720px) { .calc-related-list { grid-template-columns: 1fr; } }

Yahtzee Probability Calculator

Calculate the exact probability of rolling specific Yahtzee combinations with 5 dice, optionally with up to 2 re-rolls of selected dice.

Target Combination

Yahtzee (5 of a kind) Four of a Kind Full House (3+2) Large Straight (5 consecutive) Small Straight (4 consecutive) Three of a Kind Chance (any roll)

Number of Rolls Available

1 Roll (no re-rolls) 2 Rolls (1 re-roll) 3 Rolls (2 re-rolls) — Standard Yahtzee

Dice Already Matching (0–4, optional)

How many dice you are keeping from a previous roll (0 = fresh start)

Calculate Probability ...

// ── Combination descriptions ────────────────────────────────────────────────── const yahDescriptions = { yahtzee: "All 5 dice show the same face (e.g. 3-3-3-3-3).", four_of_a_kind: "At least 4 dice show the same face.", full_house: "3 dice of one face and 2 dice of another face.", large_straight: "5 consecutive values: 1-2-3-4-5 or 2-3-4-5-6.", small_straight: "4 consecutive values anywhere among the 5 dice.", three_of_a_kind:"At least 3 dice show the same face.", chance: "Any combination — probability is always 100%." };

function yahUpdateDescription() { const combo = document.getElementById("yah-combination").value; document.getElementById("yah-desc").textContent = yahDescriptions[combo] || ""; } yahUpdateDescription();

// ── Combinatorics helpers ───────────────────────────────────────────────────── function yahFactorial(n) { if (n n) return 0; if (k === 0 || k === n) return 1; k = Math.min(k, n - k); let r = 1; for (let i = 0; i = 5) return 1.0;

// Build transition matrix for states k..5 // P[s][t] = prob of going from s to t in one roll function yahTrans(s, t) { if (t m) return 0; return yahComb(m, j) * Math.pow(1/6, j) * Math.pow(5/6, m - j); }

// State vector: probability of being in each state 0..5 // Start at state k let stateVec = new Array(6).fill(0); stateVec[k] = 1.0;

for (let roll = 0; roll = 4) return 1.0; function fTrans(s, t) { if (t m) return 0; return yahComb(m, j) * Math.pow(1/6, j) * Math.pow(5/6, m - j); } let sv = new Array(6).fill(0); sv[k] = 1.0; for (let roll = 0; roll = 4) { nv[s] += sv[s]; continue; } for (let t = s; t = 3) return 1.0; function tTrans(s, t) { if (t m) return 0; return yahComb(m, j) * Math.pow(1/6, j) * Math.pow(5/6, m - j); } let sv = new Array(6).fill(0); sv[k] = 1.0; for (let roll = 0; roll = 3) { nv[s] += sv[s]; continue; } for (let t = s; t 0 (partial progress) const boost = 1 + k * 0.05; // heuristic partial-progress boost const pAdj = Math.min(p1 * boost, 1.0); return 1 - Math.pow(1 - pAdj, r); }

// ── Main calculation ────────────────────────────────────────────────────────── function yahCalc() { const combo = document.getElementById("yah-combination").value; const rolls = parseInt(document.getElementById("yah-rolls").value); const kRaw = document.getElementById("yah-dice-kept").value.trim(); const result = document.getElementById("yah-result");

// Validation if (combo === "chance") { result.innerHTML = "Probability: 100% — Chance scores any roll."; return; }

let k = 0; if (kRaw !== "") { k = parseInt(kRaw); if (isNaN(k) || k 4) { result.innerHTML = "⚠ Dice Already Matching must be between 0 and 4."; return; } }

// Validate kept dice vs combination const maxKept = { yahtzee:4, four_of_a_kind:3, full_house:3, large_straight:4, small_straight:3, three_of_a_kind:2 }; if (k > (maxKept[combo] || 4)) { result.innerHTML = "⚠ If you already have that many matching dice, you've already achieved the combination!"; return; }

const prob = yahMultiRoll(combo, rolls, k); const pct = (prob * 100).toFixed(4); const odds = prob > 0 ? (1 / prob).toFixed(1) : "∞"; const p1 = ({ yahtzee: yahP1_yahtzee(), four_of_a_kind: yahP1_fourOfAKind(), full_house: yahP1_fullHouse(), large_straight: yahP1_largeStraight(), small_straight: yahP1_smallStraight(), three_of_a_kind:yahP1_threeOfAKind(), chance: 1, }[combo] * 100).toFixed(4);

const comboNames = { yahtzee:"Yahtzee", four_of_a_kind:"Four of a Kind", full_house:"Full House", large_straight:"Large Straight", small_straight:"Small Straight", three_of_a_kind:"Three of a Kind", chance:"Chance" };

result.innerHTML = ` Result: ${pct}% probability of rolling ${comboNames[combo]}

MetricValue Single-roll probability (fresh)${p1}% Probability with ${rolls} roll(s) & ${k} kept dice${pct}% Odds (1 in X)1 in ${odds} Probability as fraction${prob.toFixed(6)} `; }

#### Formulas Used

Single-roll probabilities (5 dice, 65 = 7,776 total outcomes):

Multi-roll (Markov chain): States s = 0…5 matching dice. Transition probability from state s to t (t ≥ s):

P(s → t) = C(5−s, t−s) × (1/6)t−s × (5/6)5−t

State vector is propagated for each roll. Final probability = sum of absorbing-state probabilities.

Compound probability (straights, full house): P(success in r rolls) ≈ 1 − (1 − p₁)r

#### Assumptions & References

More Calculators

Read Next

Study Time Planner ANA › Life Services Authority › National Calculator Authority › Study Time Planner .calc-container { max-width: 640px; margin:...

References