User guide All recipes Tutorial Function reference Open playground

Open this document in the playground · Download source

D&D 2014 — ordinary ability checks

R01 · Beginner · Complete scoped mechanic: one ordinary unopposed check

Question and scope

How often does a character meet a supplied DC with an ordinary d20 ability check, and how sensitive is that chance to the DC? This is not an attack roll. A natural 1 can succeed when the bonus is sufficient, and a natural 20 can fail when the target is too high.

Included: a fair d20, a fixed total integer bonus, and success when total ≥ DC. Excluded: advantage/disadvantage, contests, passive/group checks, rerolls, spells, special features, and the DM's decision whether to permit or call for a roll. It does not model a whole encounter or repeated attempts.

Inputs

InputDefaultMeaning and supported values
bonus5Integer total after applicable ability/proficiency adjustments
dc15Integer target set by the DM; the comparison also checks DC ± 5

Both inputs must be integers. Boundary DCs outside the die's possible range are valid mathematical checks, not an instruction to roll for a certain task.

Model and runnable source

Add the bonus to the die's distribution, then ask inclusive threshold queries. rows is a list of label/probability pairs. Table rows are alternative settings, not independent events to multiply. See L07 for lists and L08 for converting numbers to labels. type checks the kind of input; fail stops an invalid script with an explanation. Neither is part of the dice rule.

bonus = 5
dc = 15
if type(bonus) != "int" or type(dc) != "int":
    fail("Use integer bonus and DC")

check = d(20) + bonus
rows = [
    ("Meet DC " + str(dc - 5), check.p_ge(dc - 5)),
    ("Meet DC " + str(dc), check.p_ge(dc)),
    ("Meet DC " + str(dc + 5), check.p_ge(dc + 5)),
]
output("Ordinary ability-check totals", check)
output("Alternative difficulties, same bonus", prob_table(rows))

Ordinary ability-check totals · DieRoll · mean 15.500

outcome%fracX/20
65.001/201
75.001/201
85.001/201
95.001/201
105.001/201
115.001/201
125.001/201
135.001/201
145.001/201
155.001/201
165.001/201
175.001/201
185.001/201
195.001/201
205.001/201
215.001/201
225.001/201
235.001/201
245.001/201
255.001/201

Alternative difficulties, same bonus · Table

outcome%fracX/20
Meet DC 1080.04/516
Meet DC 1555.011/2011
Meet DC 2030.03/106

Read and independently check

At defaults, totals range from 6 to 25 with mean 15.5. DCs 10, 15, and 20 have success chances 80%, 55%, and 30%. For the middle row, natural faces 10–20 are eleven successful faces out of twenty. The mean is not the success chance.

For arbitrary inputs, count the integers from dc - bonus through 20, limited to faces 1–20, then divide that count by 20. Equivalently, clamp 21 + bonus - dc to 0–20 and divide by 20. This simple hand count is independent of the distribution implementation.

Boundary checks for bonus +5: DC 6 is certain, DC 25 is 5%, and DC 26 is impossible. These tests deliberately expose accidental attack-style natural 1/20 exceptions.

Adaptations and composition limits

Change the total bonus or target, not the number of faces, to compare ordinary characters or difficulties. Advantage needs a different roll distribution; attack criticals need natural-face classification. Do not turn these rows into a sequential success policy or multiply them for the same check. Independent repeated attempts require an explicit repeat rule and consequences of failure.

Rules and related lessons

D&D Basic Rules 2014, Using Ability Scores, Ability Checks, Typical Difficulty Classes, and Proficiency Bonus; source checked 2026-09-15. Rules are paraphrased. Independent human rules review and browser/novice review remain pending.

L06 compares means and probabilities; L07 explains overlapping table rows.

Content ID: R01 · Review status: pilot

Prerequisites: L06, L07, L08

Rules review: source checked 2026-09-15; human review pending