6
\$\begingroup\$

What is a good way to roll a large number of dice and count how many of them "succeed" (i.e. meet or exceed a set target number)?

I'm playing a game called Aberrant that uses the Storyteller system (same as in World of Darkness). In this system task resolution is done by the player rolling a number of 10 sided dice determined by their stats and/or skills and counting how many of them meet or exceed a specific target number (DC) describing the difficulty of the task. The nominal DC for most actions is 6, but is adjusted higher for more difficult tasks and more lower for trivial tasks.

The problem I have arises from the fact that in Aberrant certain characters can have very high stat values, and thus can end up rolling a very large number of dice.

For instance, each dot in the "Armor" stat (representing naturally occurring armor on their body) gives +3 soak. So an example character with 5 dots of Armor (the maximum allowed) would have a pool of 15 soak against damage done to them.

If the character also has Stamina 5 and Mega-Stamina 5, they gain +10 extra soak.

Now let's say our character has the power "Bodymorph". Within the general schema players (or the Storyteller, when genning up an NPC) can determine the state of matter / energy the character can change into. So if the character specialized in a "Steel" Bodymorph and allocated their dots to have e.g. "Armor, Armor, Armor, Armor, Density Control (Increase)", that can add +12 extra soak from the 4 Armor powers provided via Bodymorph.

Adding up all of this, it can amount to a soak pool of 37 dice.

I do have a dice rolling program that I use, which can roll up to 1000 dice, but the program isn't made with the Storyteller system in mind and doesn't automatically count the successes for you. And doing the counting by hand can get very tedious.

For example, let's say I roll 123d10 and come with a set of numbers like this:

1 4 6 2 2 10 7 2 7 9 2 8 2 9 10 5 3 2 1 4 4 8 2 7 8 7 10 10 3 7 8 9 1 10 6 9 3 6 10 9 7 3 5 5 5 6 3 1 3 9 1 1 4 5 5 4 8 1 10 7 3 4 8 3 4 7 9 3 6 3 10 6 10 10 5 2 5 2 3 8 3 5 4 8 7 1 6 10 9 8 10 4 6 10 8 10 4 3 9 9 6 10 1 2 10 6 8 8 8 9 3 5 6 2 4 4 7 8 8 7 2 5 3

I'd be quite tedious to manually count how many of these numbers are equal to or greater than 6.

Does anyone know of an easier way to do this, whether using physical dice or a dice rolling program of some kind?

\$\endgroup\$
4
  • 1
    \$\begingroup\$ To be clear, the bit you need help with is counting number of results in your program data that's greater than N? \$\endgroup\$ – Someone_Evil Feb 20 at 12:22
  • 1
    \$\begingroup\$ Perhaps more for those with better knowledge of WoD; storyteller-system is a synonym of the WoD tag, so this ended up tagged as such. If there's some reason for this to be tagger differently, I'd love to hear it. \$\endgroup\$ – Someone_Evil Feb 20 at 12:28
  • 2
    \$\begingroup\$ @Someone_Evil I am shocked that there's no tag for Aberrant. \$\endgroup\$ – Hey I Can Chan Feb 20 at 12:53
  • 1
    \$\begingroup\$ TBH, this looks to me like a generic question about automatically counting successes in a large dice pool, and I've answered it as such below. If there are any WoD / Aberrant specific details that my answer fails to address, please let me know (and preferably clarify them in the question itself, too). \$\endgroup\$ – Ilmari Karonen Feb 20 at 13:18
8
\$\begingroup\$

AnyDice has a "roller" mode that sounds like it might do what you want. Basically, if you can write a script to calculate the distribution of success counts in AnyDice, then you can use the roller mode to pick a random number from that distribution.

For example, let's take this script:

DICE: 123

loop DC over {2..10} {
  output DICE d (d10 >= DC) named "[DICE]d10 vs [DC]"
}

This code calculates the distribution of rolls above or equal to a range of target DC values from 2 to 10 in a pool of 123d10 (using a trick to make the calculation faster). Of course, if this script doesn't do what you want, you can adjust it to match the system you're using. (We have plenty of questions about implementing different dice rolling mechanics in AnyDice already.)

If you plot the output of that program in graph mode, you should see something like this:

AnyDice graph mode screenshot

If you click the "Roller" button instead, however, you'll see an interface like this:

AnyDice roller mode screenshot

Here, there are three things on the screen:

  1. The drop-down menu lets you select which distribution to roll for, if the program outputs more than one. In this case, I selected "123d10 vs 6".
  2. The box next to the drop-down menu lets you choose how many rolls you want to make. (Note: not how many dice, but how many rolls of, say, 123 dice in total!) In this case I set it to 1, since I only want to roll the dice once.
  3. Next to the box is a button labelled "Roll". Clicking it will generate a random number (or several, if you entered a number higher than 1 in the box) from the chosen distribution — i.e., in this case, the distribution of successes when rolling 123d10 against a DC of 6. It turns out I rolled 60 successes this time, which is very close to the average of 61.5 for this DC and dice pool size.

Note that one thing that AnyDice will not give you, when used like this, is the actual list of rolled dice. That's because it's not actually rolling 123 dice and counting successes among them, but rather mathematically calculating what the distribution of success counts would be for such a roll, and then sampling a random number from that distribution.

\$\endgroup\$
2
  • \$\begingroup\$ This is simply amazing! I'm absolutely delighted you've helped me with this! \$\endgroup\$ – MeticulousIron Feb 20 at 18:33
  • \$\begingroup\$ there is also dice maiden bot for discord and its configurability "!roll 4d10 f1 ie10 t8" means roll 4d10 remove success on 1(f1),10 count double (ie10), target 8(t8) can also be shortened to !roll 4wod8 \$\endgroup\$ – Alkano Feb 22 at 14:47

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.