9
\$\begingroup\$

Say we have three ogres, and want to put them to sleep as a handful of level 7 casters with the sleep spell. We want to know how many of them, on average, will get put to sleep.

I tried to make an AnyDice function that searches a listing of all of the results of 11d8 for the HP totals that would put to sleep one of the ogres (using the average of 59 HP). Is this AnyDice function accurate to the goal?

output [count {59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88} in 3d(11d8)]

If not, how would I properly create the function?

\$\endgroup\$
22
\$\begingroup\$

The function is correct but can be made simpler

The function makes sense from a theoretical point of view (you are counting the number of times one of the listed numbers appears when doing 11d8 three times) and from practical corroboration from Xirema's answer.

However, it seems to be a particularly taxing function for anydice. Indeed, when changing it to 4 times instead of 3, anydice refused to provide results because it exceeded the maximum execution time.

A simpler and faster way to do the same function would be this anydice function:

output 3d(11d8 > 58)

Which is equivalent, also helps show that your initial thoughts were correct but is much faster and you can also use it for bigger values without anydice complaining.

Naturally this is not as versatile as your specific listing of each possible result but since you only care about results bigger than the creature's HP in this case it may work better.

Alternatively, as proposed by Ilmari Karonen, you could also use, for some more versatility in the results, this function:

output 3d[count {59..88} in 11d8 + 0]

(The + 0 makes AnyDice sum the 11d8 roll before passing it to [count VALUES in SEQUENCE])

\$\endgroup\$
  • 2
    \$\begingroup\$ Reason #473 I should really learn how AnyDice actually works..... Good answer. \$\endgroup\$ – Xirema Mar 14 at 23:05
  • \$\begingroup\$ @IlmariKaronen Alright, I appreciate the contribution \$\endgroup\$ – Sdjz Mar 15 at 0:42
10
\$\begingroup\$

This function appears to be correct

The output of the function in Anydice is

\begin{array}{|l|l|} \hline \text{Number} & \text{Probability} \\ \hline 0 & 68.19\% \\ \hline 1 & 27.85\% \\ \hline 2 & 3.79\% \\ \hline 3 & 0.17\% \\ \hline \end{array}

Using an independent method, I was able to calculate [within an acceptable Margin of Error] identical odds:

\begin{array}{|l|l|l|} \hline \text{Number} & \text{Trials} & \text{Probability} \\ \hline 0 & 432224441369339628206761607168\ (4.322 * 10^{29}) & 68.1930\% \\ \hline 1 & 176489190284293025714047057920\ (1.765 * 10^{29}) & 27.8415\% \\ \hline 2 & 24021805421679657469725081600\ (2.402 * 10^{28}) & 3.7900\% \\ \hline 3 & 1089863038802389357817856000\ (1.090 * 10^{27}) & 0.1720\% \\ \hline \end{array}

So because these two methods appear to have identical outcomes, I'm led to conclude that the function you've provided is correct.

I've posted my methodology here, which contains all of the individual calculations needed to come up with these trial numbers.

\$\endgroup\$
  • 3
    \$\begingroup\$ may I ask what your independent method was? \$\endgroup\$ – Carmeister Mar 15 at 3:17
  • \$\begingroup\$ @Carmeister I have a program that autogenerates a whole lot of tables that eventually are composed together to get the final results. I'm working on a function to spit out the decomposed tables to show the step-by-step process. Watch this space. \$\endgroup\$ – Xirema Mar 15 at 16:22
  • \$\begingroup\$ @Carmeister Alright, I put a link in the answer to a chatroom I created solely to contain the methodology. \$\endgroup\$ – Xirema Mar 15 at 17:30

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.