User guide All lessons Cookbook Function reference Open playground

Many checks at once

At the table

You want a grid: for many modifiers and target numbers, what is the chance 2d10 + modifier meets each target?

Try it

In the playground, open this lesson in the playground and click Run (or press Shift+Enter).

The script

roll = 2d10
rows = [
    ("modifier {}, target {}".format(mod, target), (roll + mod).p_ge(target))
    for mod in range(-2, 11)
    for target in range(0, 11)
]
output("success_grid", prob_table(rows))

success_grid · Table

outcome%fracX
modifier -2, target 0100.011.000
modifier -2, target 199.099/1000.990
modifier -2, target 297.097/1000.970
modifier -2, target 394.047/500.940
modifier -2, target 490.09/100.900
modifier -2, target 585.017/200.850
modifier -2, target 679.079/1000.790
modifier -2, target 772.018/250.720
modifier -2, target 864.016/250.640
modifier -2, target 955.011/200.550
modifier -2, target 1045.09/200.450
modifier -1, target 0100.011.000
modifier -1, target 1100.011.000
modifier -1, target 299.099/1000.990
modifier -1, target 397.097/1000.970
modifier -1, target 494.047/500.940
modifier -1, target 590.09/100.900
modifier -1, target 685.017/200.850
modifier -1, target 779.079/1000.790
modifier -1, target 872.018/250.720
modifier -1, target 964.016/250.640
modifier -1, target 1055.011/200.550
modifier 0, target 0100.011.000
modifier 0, target 1100.011.000
modifier 0, target 2100.011.000
modifier 0, target 399.099/1000.990
modifier 0, target 497.097/1000.970
modifier 0, target 594.047/500.940
modifier 0, target 690.09/100.900
modifier 0, target 785.017/200.850
modifier 0, target 879.079/1000.790
modifier 0, target 972.018/250.720
modifier 0, target 1064.016/250.640
modifier 1, target 0100.011.000
modifier 1, target 1100.011.000
modifier 1, target 2100.011.000
modifier 1, target 3100.011.000
modifier 1, target 499.099/1000.990
modifier 1, target 597.097/1000.970
modifier 1, target 694.047/500.940
modifier 1, target 790.09/100.900
modifier 1, target 885.017/200.850
modifier 1, target 979.079/1000.790
modifier 1, target 1072.018/250.720
modifier 2, target 0100.011.000
modifier 2, target 1100.011.000
modifier 2, target 2100.011.000
modifier 2, target 3100.011.000
modifier 2, target 4100.011.000
modifier 2, target 599.099/1000.990
modifier 2, target 697.097/1000.970
modifier 2, target 794.047/500.940
modifier 2, target 890.09/100.900
modifier 2, target 985.017/200.850
modifier 2, target 1079.079/1000.790
modifier 3, target 0100.011.000
modifier 3, target 1100.011.000
modifier 3, target 2100.011.000
modifier 3, target 3100.011.000
modifier 3, target 4100.011.000
modifier 3, target 5100.011.000
modifier 3, target 699.099/1000.990
modifier 3, target 797.097/1000.970
modifier 3, target 894.047/500.940
modifier 3, target 990.09/100.900
modifier 3, target 1085.017/200.850
modifier 4, target 0100.011.000
modifier 4, target 1100.011.000
modifier 4, target 2100.011.000
modifier 4, target 3100.011.000
modifier 4, target 4100.011.000
modifier 4, target 5100.011.000
modifier 4, target 6100.011.000
modifier 4, target 799.099/1000.990
modifier 4, target 897.097/1000.970
modifier 4, target 994.047/500.940
modifier 4, target 1090.09/100.900
modifier 5, target 0100.011.000
modifier 5, target 1100.011.000
modifier 5, target 2100.011.000
modifier 5, target 3100.011.000
modifier 5, target 4100.011.000
modifier 5, target 5100.011.000
modifier 5, target 6100.011.000
modifier 5, target 7100.011.000
modifier 5, target 899.099/1000.990
modifier 5, target 997.097/1000.970
modifier 5, target 1094.047/500.940
modifier 6, target 0100.011.000
modifier 6, target 1100.011.000
modifier 6, target 2100.011.000
modifier 6, target 3100.011.000
modifier 6, target 4100.011.000
modifier 6, target 5100.011.000
modifier 6, target 6100.011.000
modifier 6, target 7100.011.000
modifier 6, target 8100.011.000
modifier 6, target 999.099/1000.990
modifier 6, target 1097.097/1000.970
modifier 7, target 0100.011.000
modifier 7, target 1100.011.000
modifier 7, target 2100.011.000
modifier 7, target 3100.011.000
modifier 7, target 4100.011.000
modifier 7, target 5100.011.000
modifier 7, target 6100.011.000
modifier 7, target 7100.011.000
modifier 7, target 8100.011.000
modifier 7, target 9100.011.000
modifier 7, target 1099.099/1000.990
modifier 8, target 0100.011.000
modifier 8, target 1100.011.000
modifier 8, target 2100.011.000
modifier 8, target 3100.011.000
modifier 8, target 4100.011.000
modifier 8, target 5100.011.000
modifier 8, target 6100.011.000
modifier 8, target 7100.011.000
modifier 8, target 8100.011.000
modifier 8, target 9100.011.000
modifier 8, target 10100.011.000
modifier 9, target 0100.011.000
modifier 9, target 1100.011.000
modifier 9, target 2100.011.000
modifier 9, target 3100.011.000
modifier 9, target 4100.011.000
modifier 9, target 5100.011.000
modifier 9, target 6100.011.000
modifier 9, target 7100.011.000
modifier 9, target 8100.011.000
modifier 9, target 9100.011.000
modifier 9, target 10100.011.000
modifier 10, target 0100.011.000
modifier 10, target 1100.011.000
modifier 10, target 2100.011.000
modifier 10, target 3100.011.000
modifier 10, target 4100.011.000
modifier 10, target 5100.011.000
modifier 10, target 6100.011.000
modifier 10, target 7100.011.000
modifier 10, target 8100.011.000
modifier 10, target 9100.011.000
modifier 10, target 10100.011.000

Strategy: one table, not many output calls

Calling output(name, probability) inside a loop is fine for a handful of values, but each call becomes its own one-row “Prob” block in the UI—repeated headers and hundreds of tiny tables.

For grids and parameter sweeps:

  1. Build a list of (label, probability) rows—often with a comprehension over your parameter ranges.
  2. Call output once with prob_table(rows).

prob_table takes a list of (string label, probability) tuples. Probabilities are independent—they do not need to sum to 1 (unlike Outcomes / bucket outcomes, which describe a single roll).

Use a plain output(..., float) when you want exactly one probability. Use prob_table when you want one multi-row table with the same % / frac / X columns as distribution output.

Reading the result

One block output success_grid: Table with a row per modifier/target pair (labels like modifier -2, target 0, modifier 5, target 3, …). For a structured copy, open the json tab—table rows use "kind": "table".

Try this

What’s next

Ordered outcome labels—named success bands instead of only numeric totals.

See the user guide index and standard library reference for builtins.