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
| Input | Default | Meaning and supported values |
|---|---|---|
bonus | 5 | Integer total after applicable ability/proficiency adjustments |
dc | 15 | Integer 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 | % | frac | X/20 |
|---|---|---|---|
| 6 | 5.00 | 1/20 | 1 |
| 7 | 5.00 | 1/20 | 1 |
| 8 | 5.00 | 1/20 | 1 |
| 9 | 5.00 | 1/20 | 1 |
| 10 | 5.00 | 1/20 | 1 |
| 11 | 5.00 | 1/20 | 1 |
| 12 | 5.00 | 1/20 | 1 |
| 13 | 5.00 | 1/20 | 1 |
| 14 | 5.00 | 1/20 | 1 |
| 15 | 5.00 | 1/20 | 1 |
| 16 | 5.00 | 1/20 | 1 |
| 17 | 5.00 | 1/20 | 1 |
| 18 | 5.00 | 1/20 | 1 |
| 19 | 5.00 | 1/20 | 1 |
| 20 | 5.00 | 1/20 | 1 |
| 21 | 5.00 | 1/20 | 1 |
| 22 | 5.00 | 1/20 | 1 |
| 23 | 5.00 | 1/20 | 1 |
| 24 | 5.00 | 1/20 | 1 |
| 25 | 5.00 | 1/20 | 1 |
Alternative difficulties, same bonus · Table
| outcome | % | frac | X/20 |
|---|---|---|---|
| Meet DC 10 | 80.0 | 4/5 | 16 |
| Meet DC 15 | 55.0 | 11/20 | 11 |
| Meet DC 20 | 30.0 | 3/10 | 6 |
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
Rules review: source checked 2026-09-15; human review pending