Yahtzee Probability Calculator
ANA›Life Services Authority›National 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):
- Yahtzee: 6 / 7776 ≈ 0.0772% — 6 ways (one per face)
- Four of a Kind: (6 × C(5,4) × 5 + 6) / 7776 = 156 / 7776 ≈ 2.006%
- Full House: 6 × 5 × C(5,3) / 7776 = 300 / 7776 ≈ 3.858%
- Large Straight: 2 × 5! / 7776 = 240 / 7776 ≈ 3.086%
- Small Straight: |A∪B∪C| / 7776 = 1200 / 7776 ≈ 15.432% (inclusion-exclusion over 3 consecutive-4 sets)
- Three of a Kind: (1200 + 300 + 150 + 6) / 7776 = 1656 / 7776 ≈ 21.296%
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
- Reference: Verhoeff, T. (2001). Optimal Solitaire Yahtzee Strategies. Eindhoven University of Technology.
- Reference: Pawlewicz, J. (2010). Yahtzee: Optimal Strategy. arXiv:1105.0511.
More Calculators
- Water Hardness & Softener Dosage Calculator
- Workers Compensation Cost Calculator
- National Tree Carbon Sequestration Calculator
- Water Damage Restoration Cost Estimator
- Dehumidifier Capacity Calculator
- Rent Increase Legality Calculator
- Protected Tree Removal Permit Fee Estimator
- AI Model Accuracy vs Training Cost Tradeoff Calculator
- Bias Detection Score Calculator
- AI Training Data Size Estimator
- Training ROI Calculator
- Spaced Repetition Interval Calculator
Read Next
Study Time Planner ANA › Life Services Authority › National Calculator Authority › Study Time Planner .calc-container { max-width: 640px; margin:...