Showing posts with label dice. Show all posts
Showing posts with label dice. Show all posts
Monday, December 23, 2019
Saturday, August 24, 2019
Old Polyhedral Dice: dicecollector.com
dicecollector.com has some good information, but I don't find the site easy to navigate. Here are the pages with information about old polyhedral dice:
Saturday, May 18, 2019
Another Nod to the Original Dice
I don't use the dice in the top row—they are are made of soft plastic and would wear out. However, I want the dice I use to match the dice in the top row as much as possible. The bottom row is as close as I've gotten. I admit I'm dissatisfied with the color of the d8.
Saturday, April 7, 2018
The Dimensions of a Ten-Sided Die: Part II
The dimensions of a pentagonal trapezohedron can be expressed with two free variables. One of them determines the overall size of the polyhedron. The other determines the ratio of the distance between the polar vertices relative to the distance of the other vertices to the center.
Is there a canonical value for the ratio? We could insist all vertices lie in a sphere. This gives the die a round shape and is close to the ratio dice manufacturers use.
The values are $$k \approx 0.809017 \\ h \approx 0.212332 \\ w \approx 0.285586 \\
z \approx 1.49535 \\ y \approx 1.17557 \\ f \approx 1.345 \\ g \approx
0.653491 \\ n \approx 0.899454 \\ m = 1 \\ \alpha \approx 51.8273^\circ \\ \beta = 90^\circ \\ \gamma \approx 128.173^\circ $$
Is there a canonical value for the ratio? We could insist all vertices lie in a sphere. This gives the die a round shape and is close to the ratio dice manufacturers use.
Since the vertices are now equidistant to the center we can impose the additional constraint $$n + \frac{h}{2} = \sqrt{\frac{h^2}{4} + m^2}$$ We arbitrarily set m to 1 and solve using Mathematica:
Solve[{k/n == m/(n + h),
k/m == Cos[2*Pi/10],
w/z == h/(n + h),
y/(2*m) == Sin[2*Pi/10],
z == Sqrt[m^2 + (n + h)^2],
f == Sqrt[(z - w)^2 + (y/2)^2],
g == Sqrt[w^2 + (y/2)^2],
n + h/2 == Sqrt[h^2/4 + m^2],
m == 1},
{k, h, w, z, y, f, g, n, m}] // N
The values are $$k \approx 0.809017 \\ h \approx 0.212332 \\ w \approx 0.285586 \\
z \approx 1.49535 \\ y \approx 1.17557 \\ f \approx 1.345 \\ g \approx
0.653491 \\ n \approx 0.899454 \\ m = 1 \\ \alpha \approx 51.8273^\circ \\ \beta = 90^\circ \\ \gamma \approx 128.173^\circ $$
Sunday, March 11, 2018
The Dimensions of a Ten-Sided Die
TSR introduced the ten-sided die to gamers in 1981 but the idea of using a pentagonal trapezohedron as a die was first patented in 1906.
The pentagonal trapezohedron is face-transitive and each face is parallel to a face on the opposite side. Is the pentagonal trapezohedron the only ten-sided polyhedron with these properties? The pentagonal bipyramid is face-transitive but lacks parallel, opposite sides. The right, regular-octagonal prism has parallel, opposite sides but isn't face-transitive.
The pentagonal trapezohedron isn't vertex-transitive. Two of the vertices, which we can think of as the poles, touch 5 faces each. The remaining 10 vertices are arranged in two parallel pentagons and touch 3 faces each.
In the diagrams above a few labels are provided as an aid to figuring out the dimensions of the pentagonal trapezohedron. In the first diagram the dimensions n and h are along the axis connecting the two poles of the pentagonal trapezohedron. The left diagonal is the central spine of one of the kite-shaped faces, labeled z in the bottom two diagrams. If we rotate the trapezohedron around the axis 36°, we can bring the central spine of an adjacent face into the position of the right diagonal. The non-polar vertices are in the planes perpendicular to the axis indicated by k or m.
If we rotate the polyhedron so that the axis is perpendicular to the plane of the page, then the second diagram shows how the non-polar vertices are arranged.
By similar triangles in the first diagram this holds $$ \frac{k}{n} = \frac{m}{n+h}$$ From the second diagram and trigonometry $$ \frac{k}{m} = \cos{\frac{2 \pi}{10}}$$ The remaining equations in the Mathematica code that follows can be justified by similar triangles, trigonometry, or the Pythagorean theorem:
$$ k = \frac{1 + \sqrt{5}}{4}m \\ h = (2 + \sqrt{5})n \\ w = \frac{3\sqrt{m^2 + (6-2\sqrt{5})n^2}}{4} \\ z = \sqrt{m^2 +(6 - 2\sqrt{5})n^2} \\ y = \sqrt{\frac{1}{2} \left(5-\sqrt{5}\right)} m \\ f = \sqrt{m^2 + n^2} \\ g = \sqrt{\left(9-4 \sqrt{5}\right) n^2-\frac{1}{2} \left(\sqrt{5}-3\right) m^2} \\ \alpha = 2 \sin ^{-1}\left(\frac{\sqrt{\frac{1}{2} \left(5-\sqrt{5}\right)} m}{2
\sqrt{m^2+n^2}}\right) \\ \gamma = 2 \cos ^{-1}\left(-\frac{\left(\sqrt{5}-3\right) \sqrt{m^2-2 \left(\sqrt{5}-3\right) n^2}}{2
\sqrt{4 \left(9-4 \sqrt{5}\right) n^2-2 \left(\sqrt{5}-3\right) m^2}}\right) \\ \beta = \frac{2 \pi - \alpha - \gamma}{2}$$We are free to choose m and n to be any positive values.
The pentagonal trapezohedron is face-transitive and each face is parallel to a face on the opposite side. Is the pentagonal trapezohedron the only ten-sided polyhedron with these properties? The pentagonal bipyramid is face-transitive but lacks parallel, opposite sides. The right, regular-octagonal prism has parallel, opposite sides but isn't face-transitive.
The pentagonal trapezohedron isn't vertex-transitive. Two of the vertices, which we can think of as the poles, touch 5 faces each. The remaining 10 vertices are arranged in two parallel pentagons and touch 3 faces each.
In the diagrams above a few labels are provided as an aid to figuring out the dimensions of the pentagonal trapezohedron. In the first diagram the dimensions n and h are along the axis connecting the two poles of the pentagonal trapezohedron. The left diagonal is the central spine of one of the kite-shaped faces, labeled z in the bottom two diagrams. If we rotate the trapezohedron around the axis 36°, we can bring the central spine of an adjacent face into the position of the right diagonal. The non-polar vertices are in the planes perpendicular to the axis indicated by k or m.
If we rotate the polyhedron so that the axis is perpendicular to the plane of the page, then the second diagram shows how the non-polar vertices are arranged.
By similar triangles in the first diagram this holds $$ \frac{k}{n} = \frac{m}{n+h}$$ From the second diagram and trigonometry $$ \frac{k}{m} = \cos{\frac{2 \pi}{10}}$$ The remaining equations in the Mathematica code that follows can be justified by similar triangles, trigonometry, or the Pythagorean theorem:
Solve[{k/n == m/(n + h), k/m == Cos[2*Pi/10], w/z == h/(n + h),
y/(2*m) == Sin[2*Pi/10], z == Sqrt[m^2 + (n + h)^2],
f == Sqrt[(z - w)^2 + (y/2)^2], g == Sqrt[w^2 + (y/2)^2]},
{k, h, w, z, y, f, g}]
$$ k = \frac{1 + \sqrt{5}}{4}m \\ h = (2 + \sqrt{5})n \\ w = \frac{3\sqrt{m^2 + (6-2\sqrt{5})n^2}}{4} \\ z = \sqrt{m^2 +(6 - 2\sqrt{5})n^2} \\ y = \sqrt{\frac{1}{2} \left(5-\sqrt{5}\right)} m \\ f = \sqrt{m^2 + n^2} \\ g = \sqrt{\left(9-4 \sqrt{5}\right) n^2-\frac{1}{2} \left(\sqrt{5}-3\right) m^2} \\ \alpha = 2 \sin ^{-1}\left(\frac{\sqrt{\frac{1}{2} \left(5-\sqrt{5}\right)} m}{2
\sqrt{m^2+n^2}}\right) \\ \gamma = 2 \cos ^{-1}\left(-\frac{\left(\sqrt{5}-3\right) \sqrt{m^2-2 \left(\sqrt{5}-3\right) n^2}}{2
\sqrt{4 \left(9-4 \sqrt{5}\right) n^2-2 \left(\sqrt{5}-3\right) m^2}}\right) \\ \beta = \frac{2 \pi - \alpha - \gamma}{2}$$We are free to choose m and n to be any positive values.
Monday, February 19, 2018
TSR Dice: Mentzer Basic
TSR replaced the Moldvay edition of the basic set with the Mentzer edition in 1983. At perhaps the same time TSR started producing dice from new molds.
Like the Moldvay dice, the new dice came unpainted in a baggy with a crayon. They were also sold separately from the basic set in a blister pack.
Like the Moldvay dice, the new dice came unpainted in a baggy with a crayon. They were also sold separately from the basic set in a blister pack.
Sunday, February 18, 2018
TSR Dice: Moldvay Basic
DiceCollector.com has diagrams for identifying dice manufacturers. The diagrams are partial dice nets—they show the digits on the faces adjacent to the face with the highest digit. The orientation of the digits on the faces is also significant. Even though the diagrams don't describe all the faces, they often narrow down the possibilities to a single manufacturer.
The problem with partial dice nets is they require having the die in hand. To make it easier to identify dice in photos, I thought it would be nice to make some complete dice nets available.
My first set of dice nets are for the dice which came with the Dungeons & Dragons Basic set edited by Tom Moldvay. The copyright on the rulebook is 1980, but the product wasn't announced in Dragon Magazine until August 1981. There were four identifiable printings of this box set. I have the 3rd and 4th printings. Both came with a set of the light blue dice pictured above. The dice came sealed in plastic with a white crayon.
The problem with partial dice nets is they require having the die in hand. To make it easier to identify dice in photos, I thought it would be nice to make some complete dice nets available.
My first set of dice nets are for the dice which came with the Dungeons & Dragons Basic set edited by Tom Moldvay. The copyright on the rulebook is 1980, but the product wasn't announced in Dragon Magazine until August 1981. There were four identifiable printings of this box set. I have the 3rd and 4th printings. Both came with a set of the light blue dice pictured above. The dice came sealed in plastic with a white crayon.
Saturday, February 17, 2018
Falling Distributions
In a previous post I suggested some ways to generate falling distributions with dice. I was looking for a technique where all numbers between 1 and n have nonzero probability and where the probability of k is greater than the probability of k + 1. The ideal solution in my mind would use a single cast of the dice and wouldn't require consulting a table.
Such a solution exists. It's so simple I'm sad I didn't see it right away. Just roll several dice and take the lowest. As a bonus you can decrease the expected value by using more dice.
Such a solution exists. It's so simple I'm sad I didn't see it right away. Just roll several dice and take the lowest. As a bonus you can decrease the expected value by using more dice.
Monday, January 1, 2018
Friday, December 29, 2017
Maximally Separated Points on a Sphere
One of the designs for a seven-sided die is a sphere truncated at 7 points as far apart from each other as possible. The die doesn't have opposite and parallel sides so there isn't a face for writing the result on. Still the technique is general and could be used to create dice with anywhere between 5 and 100 sides.
How do we find points as far apart as possible from each other? For most values of n the problem is hard. One approach is to sum the pairwise distances of the points and use gradient ascent to find a maximum. The objective function is not convex and has local maxima, but if you think a local maximum is better than nothing, here is code find one. The code uses Euclidean distance, though I wonder if using the angle between two points would work better. The partial derivatives are with respect to the θ and φ of spherical coordinates since we are constrained to the surface of the sphere.
Running the code:
The output contains the coordinates of the 7 points found and the value of the objective function at those points. A convex polytope can be defined in polymake using a set of points—in which case it finds the convex hull—or a set of half spaces—in which case it finds the intersection. Polymake requires homogeneous coordinates.
Polymake tells us the polyhedron has ten faces. This website says there are 5 topologically different polyhedra with 7 vertices and 10 faces. Since polymake tells us which vertices belong to which faces, we can use Blender to visualize the polyhedron.
Following the instructions above yields this picture:
Our polyhedron is topologically equivalent to a pentagonal bipyramid. The figure is the dual of the 7-sided polyhedron we would like to make a die out of. The dual can be found in polymake using polarize:
Polymake lists the vertices in a face in ascending order. Blender requires that we list the vertices in the order they occur as we travel around the polygon—otherwise the wireframe will have extra edges in the faces. Trial and error was used to find the correct order:
The polyhedron is topologically equivalent to a pentagonal prism.
How do we find points as far apart as possible from each other? For most values of n the problem is hard. One approach is to sum the pairwise distances of the points and use gradient ascent to find a maximum. The objective function is not convex and has local maxima, but if you think a local maximum is better than nothing, here is code find one. The code uses Euclidean distance, though I wonder if using the angle between two points would work better. The partial derivatives are with respect to the θ and φ of spherical coordinates since we are constrained to the surface of the sphere.
Running the code:
$ ./maximally_separated_points_on_sphere.py -n 7
(0.139, -0.576, -0.805)
(-0.191, 0.963, 0.191)
(-0.608, 0.338, -0.718)
(0.173, 0.142, 0.975)
(0.884, 0.38, -0.273)
(-0.855, -0.418, 0.308)
(0.458, -0.828, 0.322)
31.530926
The output contains the coordinates of the 7 points found and the value of the objective function at those points. A convex polytope can be defined in polymake using a set of points—in which case it finds the convex hull—or a set of half spaces—in which case it finds the intersection. Polymake requires homogeneous coordinates.
$ polymake
polytope > $p = new Polytope(POINTS =>
[[1, 0.139, -0.576, -0.805],
[1, -0.191, 0.963, 0.191],
[1, -0.608, 0.338, -0.718],
[1, 0.173, 0.142, 0.975],
[1, 0.884, 0.38, -0.273],
[1, -0.855, -0.418, 0.308],
[1, 0.458, -0.828, 0.322]]);
polytope > print $p->VERTICES_IN_FACETS;
{1 2 5}
{0 2 5}
{0 2 4}
{1 3 5}
{1 3 4}
{1 2 4}
{3 4 6}
{3 5 6}
{0 5 6}
{0 4 6}
Polymake tells us the polyhedron has ten faces. This website says there are 5 topologically different polyhedra with 7 vertices and 10 faces. Since polymake tells us which vertices belong to which faces, we can use Blender to visualize the polyhedron.
Following the instructions above yields this picture:
Our polyhedron is topologically equivalent to a pentagonal bipyramid. The figure is the dual of the 7-sided polyhedron we would like to make a die out of. The dual can be found in polymake using polarize:
polytope > $dual = polarize($p);
polytope > print convert_to<Float>(
dehomogenize($dual->VERTICES));
1.455537382 -0.7147719412 -0.1762669144
1.083809015 0.804520317 0.8537214292
-0.4415750134 -0.506366941 1.52830861
1.059871785 -0.6049596605 -1.125593382
-0.8893855532 -1.073711966 -0.7114555899
-0.2646212759 -1.291044842 1.009076016
-1.423698754 0.1131924589 -0.7895112253
0.2939932965 0.9002156047 -1.208914314
0.4841557507 1.557693116 0.211262627
-1.274046573 0.7045065006 0.518151282
polytope > print $dual->VERTICES_IN_FACETS;
{1 2 8 9}
{0 3 4 5}
{0 1 2 5}
{3 4 6 7}
{2 4 5 6 9}
{0 1 3 7 8}
{6 7 8 9}
Polymake lists the vertices in a face in ascending order. Blender requires that we list the vertices in the order they occur as we travel around the polygon—otherwise the wireframe will have extra edges in the faces. Trial and error was used to find the correct order:
Thursday, November 23, 2017
Difficult Rolls
Here are the dice I keep behind the screen:
The d20 can simulate a d4 by taking the result modulo 4, treating 0 as 4.
The d20 can simulate a d8 or a d12 with the help of a d6. Take the result of the d20 modulo 4, treating 0 as 4. Roll a d6 and add 4 if the result is 4, 5, or 6. Or add 4 if the result is 3, 4 and add 8 if the result is 5, 6.
This DM is a minimalist and only uses a single d6 and a d20 when running a game. Perhaps he uses the techniques above. Maybe he runs an old version of the game where everyone has d6 hit dice and does d6 damage. The DM could ask a player to make a roll.
If we are using the above dice, it is sensible to stick to dice rolls in the ranges 1–4, 1–6, 1–8, 1–10, 1–12, 1–20, and 1–100. But if we could generate an integer randomly from any range, then any list could be used as a random generation table.
The Holmes rulebook lists 14 1st level magic-user spells, 18 2nd level magic-user spells, and 18 3rd level magic-user spells. What if we need to determine a spell randomly, say because a scroll is found or an NPC spell caster is encountered? Small wonder the spell lists were truncated to 12 per level in the Moldvay rulebook.
To get a d2 or a d3 we can use the d6 and apply integer division and rounding up. When rolling a d6 with pips I like to use ⌈d6/3⌉ or ⌈d6/2⌉.
For a d5, I use d20 % 5, replacing 0 with 5.
As discussed previously one could use modular arithmetic to get the d2 and d3 rolls. Why the inconsistency? I prefer modular arithmetic nowadays, but the group has a tradition going back to childhood for how a d2 or d3 is rolled.
Back when icosahedral dice were numbered 0 to 9 twice, grognards would roll them with a helper d6 to determine whether the result was in the range 1–10 or 11–20. Specifically the formula d10 × (d2 – 1) × 10 was used. The technique generalizes:
d18: d6 × (d3 – 1) × 6
d24: d12 × (d2 – 1) × 12
d30: d10 × (d3 – 1) × 10
d36: d12 × (d3 – 1) × 12
d40: d20 × (d2 – 1) × 20
d60: d20 × (d3 – 1) × 20
I use a d6 with pips as the helper. When rolling a d18 I combine it with the d6 with digits.
A truly uniform result for most of the other ranges is not possible, at least not with a single roll. We use the "if high, then low" technique to get a near uniform approximation. To get a d7, one rolls a d8 and a d6. If the d8 is too high the result on the d6 is used. In general we find the next higher and next lower ranges that we can roll exactly and use those.
To get a d17 a d16 and a d20 are rolled. I don't use a d16 and a d18 because both need a helper d6; there would be ambiguity if the dice are rolled at the same time.
Gaming has gotten by with uniform (e.g. d20) and normal (e.g. 3d6) distributions. Both of these are symmetric distributions with expected values at the center of the distribution.
When world-building, an asymmetric distribution in which small values are more likely than large values is desirable. We should use a distribution whose probabilities fall in this way to determine the level of an NPC if we want low-level characters to be common and high-level characters to be rare. It could also be used to determine the number of humans in a settlement or the number of orcs in a war party, since populations tend to follow a Pareto distribution.
I know about exploding rolls and penetrating rolls, but they are close to uniform in practice.
One gets a geometric distribution by rolling repeatedly until a certain value is obtained and counting the number of rolls that is needed. Although strictly decreasing, it is a slow method which requires a lot of re-rolling.
Update: I've found a better way.
This interview mentions a promising technique, which is to roll the same dice twice and apply the absolute value function to the difference:
Because of the zero value, this isn't a perfect falling distribution, but if one is willing to re-roll until the result is not zero a falling distribution is achieved.
An exponential distribution was used with the parameter chosen so 12 is the highest possible value. The distribution looks like this:
Making Do With a d20 and a d6
In a pinch I could get by with the two d20s and three d6s with pips. The d20s can be used for a percentile roll with the convention that pink is tens and white is ones.The d20 can simulate a d4 by taking the result modulo 4, treating 0 as 4.
The d20 can simulate a d8 or a d12 with the help of a d6. Take the result of the d20 modulo 4, treating 0 as 4. Roll a d6 and add 4 if the result is 4, 5, or 6. Or add 4 if the result is 3, 4 and add 8 if the result is 5, 6.
This DM is a minimalist and only uses a single d6 and a d20 when running a game. Perhaps he uses the techniques above. Maybe he runs an old version of the game where everyone has d6 hit dice and does d6 damage. The DM could ask a player to make a roll.
Discrete Uniform Distributions
How many discrete uniform distribution are needed?If we are using the above dice, it is sensible to stick to dice rolls in the ranges 1–4, 1–6, 1–8, 1–10, 1–12, 1–20, and 1–100. But if we could generate an integer randomly from any range, then any list could be used as a random generation table.
The Holmes rulebook lists 14 1st level magic-user spells, 18 2nd level magic-user spells, and 18 3rd level magic-user spells. What if we need to determine a spell randomly, say because a scroll is found or an NPC spell caster is encountered? Small wonder the spell lists were truncated to 12 per level in the Moldvay rulebook.
Integer Division and Round Up or Modular Arithmetic
Two techniques for getting a smaller roll from a larger rollTo get a d2 or a d3 we can use the d6 and apply integer division and rounding up. When rolling a d6 with pips I like to use ⌈d6/3⌉ or ⌈d6/2⌉.
For a d5, I use d20 % 5, replacing 0 with 5.
As discussed previously one could use modular arithmetic to get the d2 and d3 rolls. Why the inconsistency? I prefer modular arithmetic nowadays, but the group has a tradition going back to childhood for how a d2 or d3 is rolled.
d6 Helper
Getting a larger roll from two smaller rollsBack when icosahedral dice were numbered 0 to 9 twice, grognards would roll them with a helper d6 to determine whether the result was in the range 1–10 or 11–20. Specifically the formula d10 × (d2 – 1) × 10 was used. The technique generalizes:
d15: d5 + (d3 – 1) × 5
d16: d8 + (d2 – 1) × 8d18: d6 × (d3 – 1) × 6
d24: d12 × (d2 – 1) × 12
d30: d10 × (d3 – 1) × 10
d36: d12 × (d3 – 1) × 12
d40: d20 × (d2 – 1) × 20
d60: d20 × (d3 – 1) × 20
I use a d6 with pips as the helper. When rolling a d18 I combine it with the d6 with digits.
If High Then Low
Interpolating a roll in between a smaller and a larger rollA truly uniform result for most of the other ranges is not possible, at least not with a single roll. We use the "if high, then low" technique to get a near uniform approximation. To get a d7, one rolls a d8 and a d6. If the d8 is too high the result on the d6 is used. In general we find the next higher and next lower ranges that we can roll exactly and use those.
To get a d17 a d16 and a d20 are rolled. I don't use a d16 and a d18 because both need a helper d6; there would be ambiguity if the dice are rolled at the same time.
Falling Distributions
Motiving the falling distributionGaming has gotten by with uniform (e.g. d20) and normal (e.g. 3d6) distributions. Both of these are symmetric distributions with expected values at the center of the distribution.
When world-building, an asymmetric distribution in which small values are more likely than large values is desirable. We should use a distribution whose probabilities fall in this way to determine the level of an NPC if we want low-level characters to be common and high-level characters to be rare. It could also be used to determine the number of humans in a settlement or the number of orcs in a war party, since populations tend to follow a Pareto distribution.
I know about exploding rolls and penetrating rolls, but they are close to uniform in practice.
One gets a geometric distribution by rolling repeatedly until a certain value is obtained and counting the number of rolls that is needed. Although strictly decreasing, it is a slow method which requires a lot of re-rolling.
Update: I've found a better way.
Absolute Value of the Difference of Two Rolls
A linear falling distribution with a single roll of two dice—almostThis interview mentions a promising technique, which is to roll the same dice twice and apply the absolute value function to the difference:
Because of the zero value, this isn't a perfect falling distribution, but if one is willing to re-roll until the result is not zero a falling distribution is achieved.
Tables
Falling distributions and in general any distribution using percentiles
Here is code for generating a d100 table which approximates an arbitrary distribution. It was used to make this table:
Here is code for generating a d100 table which approximates an arbitrary distribution. It was used to make this table:
| d100 | level |
|---|---|
| 01-33 | 1 |
| 34-55 | 2 |
| 56-70 | 3 |
| 71-80 | 4 |
| 81-86 | 5 |
| 87-91 | 6 |
| 92-94 | 7 |
| 95-96 | 8 |
97
| 9 |
98
| 10 |
99
| 11 |
00
| 12 |
Sunday, November 12, 2017
Giant Hit Points
To get the hit points of a monster with a lot of hit dice, you have to roll the d8—or d6 if playing the old way—repeatedly and add them up.
This is similar to rolling fireball damage. An earlier post shows how to approximate the results of fireball damage using just two d6 rolls. The goal in the earlier post was to reduce the amount of calculation while preserving the original distribution.
The same could be done for hit dice. But do we want to preserve the original distribution? As noted in the previous post the result will usually be within 5 hit points of the mean. If a more uniform distribution is desired, we could replace an nd8 roll with an (n-1)×d8 + d8 roll.
Here are the distributions for a hill giant using 8d8 and 7×d8+d8:
A few values: 15, 22, 29, 36, 43, 50, and 57, are twice as likely as the others. If we were using 8×d8+d8 to roll hit points for a stone giant the distribution would be perfectly uniform.
When n is greater than 9, some values have a probability of zero. We could use an (n–2)×d8+2d8 roll so that all values are still possible, at least as long as n isn't greater than 17. Here is a comparison of using 15d8 and 13×d8+2d8 for storm giant hit points:
You might ask how hit points are distributed in the old modules. Let's take a look at the adult male hill giants in the steading:
Also see an earlier post for the distribution of goblin hit points in Little Keep on the Borderlands.
This is similar to rolling fireball damage. An earlier post shows how to approximate the results of fireball damage using just two d6 rolls. The goal in the earlier post was to reduce the amount of calculation while preserving the original distribution.
The same could be done for hit dice. But do we want to preserve the original distribution? As noted in the previous post the result will usually be within 5 hit points of the mean. If a more uniform distribution is desired, we could replace an nd8 roll with an (n-1)×d8 + d8 roll.
Here are the distributions for a hill giant using 8d8 and 7×d8+d8:
When n is greater than 9, some values have a probability of zero. We could use an (n–2)×d8+2d8 roll so that all values are still possible, at least as long as n isn't greater than 17. Here is a comparison of using 15d8 and 13×d8+2d8 for storm giant hit points:
You might ask how hit points are distributed in the old modules. Let's take a look at the adult male hill giants in the steading:
Also see an earlier post for the distribution of goblin hit points in Little Keep on the Borderlands.
Wednesday, November 8, 2017
Polyhedra
We make use of in-game puzzles. To prosper in the Athenopolis campaign, familiarity with a fair amount of polyhedra lore is necessary.
The five Platonic solids are the only convex regular polyhedra. Euclid seems to argue something to this effect in Book XIII, Proposition 18 of The Elements (c. 300 BCE). One translation of his claim is:
The polyhedron is edge-transitive if we can place any edge of the polyhedron to any inside angle of the case and it still fits. A consequence of being edge transitive is that every edge is the same length.
The polyhedron is vertex-transitive if we can place any vertex of the polyhedron to any corner of the case and it still fits. A consequence of being vertex transitive is that every vertex touches the same number of faces and edges.
Alternative names for face-transitive, edge-transitive, and vertex-transitive are isohedral, isotoxsal, and isogonal, respectively.
A polyhedron which is face, edge, and vertex-transitive is called a regular polyhedron.
The symmetric group allows for reflections as well as rotations. If the mirror image of a polyhedron also fits in its case, its symmetric group is twice the size of its alternating group.
The symmetry groups of the cube and octohedron are the same size. They are in fact isomorphic. The same is true of the dodecahedron and the icosahedron.
A polyhedron must have at least 4 vertices since any 3 points are contained in a plane.
We can rule out a polyhedron with 3 faces by noting that an edge must have exactly two faces. For the polyhedron to have a vertex on the edge, the third face must intersect the vertex but not the rest of the edge. It follows the polyhedron doesn't have any additional vertices, but this contradicts the fact that a polyhedron must have at least 4 vertices.
Each edge belongs to exactly two faces, but each face has three or more edges. The constraint 2E ≥ 3F follows, and because a polyhedron must have at least 4 faces it must also have at least 6 edges.
For every value of F ≥ 4 we can construct a polyhedron called a pyramid with F faces by starting with a (F – 1)-polygon and connecting each vertex with a point not in the plane of the polygon. The f-vector of the polyhedron is (F, 2F – 2, F). A tetrahedron is triangular pyramid and the Great Pyramid of Giza is a square pyramid. The formula for the f-vector shows that we have also constructed a polyhedron for every V ≥ 4.
A pyramid is right if the line connecting the center of the polygon to the off vertex is perpendicular to the plane of the polygon. Otherwise the pyramid is oblique.
Similarly a prism is a way of constructing a polyhedron for each F ≥ 5 with an f-vector of (2F – 4, 3F – 6, F). The cube is a square prism. Note that a decagon prism has an f-vector of (20, 30, 12) which is the same as the f-vector of a dodecahedron. The example shows that the f-vector of a polyhedron doesn't necessarily tell us the number of edges each face has.
A prism is right if the off-polygon faces are perpendicular to the polygon faces. Otherwise the prism is oblique.
There is a type of polyhedron called a bipyramid which yields an infinite family of face transitive polyhedra. The vertices of a regular n-polygon is connected to two vertices off the plane of the polygon on opposite sides. For the polyhedron to be face transitive, the vertices must be equidistant from and perpendicular to the center of the n-polygon. The figure is (n + 2, 3n, 2n) for n ≥ 3. The octohedron is a bipyramid.
The pentagonal bipyramid gives us a way to construct a 10-sided die, but most 10-sided dice are a different polyhedron called the pentagonal trapezohedron. The faces are quadrilaterals and in particular kites. The f-vector is (2n + 2, 4n, 2n) for n ≥ 3. The triangular trapezohedron has a f-vector of (8, 12, 6) which is the same as the cube.
The trapezohedron shows that face transitive does not imply edge transitive or vertex transitive. Bipyramids other than the square bipyramid or octahedron also show this.
The tetrahedron notwithstanding, for a polyhedron to be useful as a die we want each face to be parallel to a face on the opposite side so that there is always a clear "up". Insisting that a bipyramid or trapezohedron have parallel faces places a constraint on the distance of the off-polygon vertices from the polygon. Update: or so I thought, but in fact the trapezohedron or bipyramid can have parallel faces regardless of the ratio of off-polygon vertex distance to polygon side length. And it should be emphasized that for a bipyramid to have parallel faces the polygon must have an even number of sides. The trapezohedron does not have this limitation.
The Catalan solids are another set of 13 face transitive polyhedra. One of these, the rhombic triacontahedron is used for 30-sided dice.
Polytopes generalize polygons (in two dimensions) and polyhedra (in three dimensions) to n-dimensions.
A 4-polytope has 0-dimensional vertices, 1-dimensional edges, 2-dimensional faces, and 3-dimensional cells. The number of each can be represented by a f-vector with four elements: (V, E, F, C).
An n-polytope has n – 1 dimensional facets, n – 2 dimensional ridges, n – 3 dimensional peaks.
Sub-polytopes of any dimension can be called faces. If necessary to indicate the dimension they are called j-faces.
The extended f-vector of a polytope includes extra values on either end. One value, for dimension –1, represents the empty set. The other value, for dimension n, represents the polytope itself. These values are always 1. The cube has extended f-vector (1, 8, 12, 6, 1).
The formula for Euler's characteristic extends to convex polytopes and motivates our use of extended f-vectors. If fi is the number of faces of dimension t, then
$$ \sum_{i=–1}^n (–1)^i f_i = 0$$
At the top of the graph we put the entire polyhedron and at the bottom we put the empty set. This makes the graph a mathematical lattice. Every two elements in the lattice have a unique least element which contains both of them and a unique greatest element contained by both of them. The extended f-vector is the number of elements in each row of the lattice from the bottom up.
Two polyhedra are combinatorially equivalent if their face lattices are isomorphic. The cube and the triangular trapezohedron are examples of combinatorially equivalent polyhedra. The dodecagon prism and the dodecahedron are not combinatorially equivalent even though their f-vectors are the same.
A flag is a sequence of "faces" of an n-polytope of increasing dimension: F- 1, F0, F1, ..., Fn, where each face is contained in the face that follows it in the sequence. The F-1 face is the "empty face" and the Fn face is the entire n-polytype.
A regular polytope is one where the symmetry group of the polytope acts transitively on the flags. This implies that the polytope is face, edge, and vertex transitive.
Six-sided dice are often numbered with the constraint that opposite sides must add to 7. With this constraint there are only two ways to number a six-sided die. If you hold a six-sided die so that the sides for 1, 2, and 3 are showing, if the numbers increase in a counter-clockwise direction the die is said to be right-handed, which is the way Western dice are numbered.
Platonic Solids
- tetrahedron or triangular pyramid
- hexahedron or cube
- octahedron
- dodecahedron
- icosahedron
In the original edition of the game the colors of the dice were yellow, orange, green, blue, and white respectively.
How many vertices does an icosahedron have? You can pull out a die and try to count them, but it is better to observe that there 20 faces, and each has 3 vertices, for a total of 60 (vertex, face) pairs. However, each vertex is shared by 5 faces, so the number of vertices is 60 / 5 = 12.
A similar line of reasoning can be used to show the number of edges is 30.
In the Timaeus (c. 360 BCE), Plato associates the tetrahedron, octahedron, icosahedron, and cube with classical elements fire, air, water, and earth respectively. The dodecahedron is said to be the shape of the universe. Aristotle later associates the dodecahedron with the element aether.
A similar line of reasoning can be used to show the number of edges is 30.
In the Timaeus (c. 360 BCE), Plato associates the tetrahedron, octahedron, icosahedron, and cube with classical elements fire, air, water, and earth respectively. The dodecahedron is said to be the shape of the universe. Aristotle later associates the dodecahedron with the element aether.
The five Platonic solids are the only convex regular polyhedra. Euclid seems to argue something to this effect in Book XIII, Proposition 18 of The Elements (c. 300 BCE). One translation of his claim is:
No other figures, besides the five said figures, can be constructed which is contained by equilateral and equiangular figures equal to one another.
Face, Edge, and Vertex Transitive
Imagine we had a case for the model of a polyhedron that fit it snugly. The polyhedron is face-transitive if we can place any face of the polyhedron to any face of the case and it still fits. A consequence of being face transitive is that every face is the same shape and size.The polyhedron is edge-transitive if we can place any edge of the polyhedron to any inside angle of the case and it still fits. A consequence of being edge transitive is that every edge is the same length.
The polyhedron is vertex-transitive if we can place any vertex of the polyhedron to any corner of the case and it still fits. A consequence of being vertex transitive is that every vertex touches the same number of faces and edges.
Alternative names for face-transitive, edge-transitive, and vertex-transitive are isohedral, isotoxsal, and isogonal, respectively.
A polyhedron which is face, edge, and vertex-transitive is called a regular polyhedron.
Alternating Groups and Symmetry Groups
Let's reserve the letters V, E, and F for the number of vertices, edges, and faces of a polyhedron, respectively. The vector (V, E, F) is called the face counting vector or f-vector of a polyhedron. For example the f-vector of the cube is (8, 12, 6).
Returning to the model of a polyhedron and its case, each way we can put the polyhedron in its case represents an element of the alternating group of the polyhedron.
Since Platonic solids are vertex transitive there is at least one group element for each of the V vertices. Each vertex is connected to 2 × E / V edges, and if we assign one of the model edges to a case edge the positions of the rest of the vertices and edges is determined. Thus the size of the alternating group is V × (2 × E / V) = E × 2.
The symmetric group allows for reflections as well as rotations. If the mirror image of a polyhedron also fits in its case, its symmetric group is twice the size of its alternating group.
| V | E | F | |A| | |S| | |
|---|---|---|---|---|---|
| tetrahedron | 4 | 6 | 4 | 12 | 24 |
| cube | 8 | 12 | 6 | 24 | 48 |
| octohedron | 6 | 12 | 8 | 24 | 48 |
| dodecahedron | 20 | 30 | 12 | 60 | 120 |
| icosahedron | 12 | 30 | 20 | 60 | 120 |
The symmetry groups of the cube and octohedron are the same size. They are in fact isomorphic. The same is true of the dodecahedron and the icosahedron.
Other Polyhedra
Let's show that the tetrahedron with an f-vector of (4, 6, 4) has the smallest possible number of vertices, edges, and faces for a polyhedron.A polyhedron must have at least 4 vertices since any 3 points are contained in a plane.
We can rule out a polyhedron with 3 faces by noting that an edge must have exactly two faces. For the polyhedron to have a vertex on the edge, the third face must intersect the vertex but not the rest of the edge. It follows the polyhedron doesn't have any additional vertices, but this contradicts the fact that a polyhedron must have at least 4 vertices.
Each edge belongs to exactly two faces, but each face has three or more edges. The constraint 2E ≥ 3F follows, and because a polyhedron must have at least 4 faces it must also have at least 6 edges.
For every value of F ≥ 4 we can construct a polyhedron called a pyramid with F faces by starting with a (F – 1)-polygon and connecting each vertex with a point not in the plane of the polygon. The f-vector of the polyhedron is (F, 2F – 2, F). A tetrahedron is triangular pyramid and the Great Pyramid of Giza is a square pyramid. The formula for the f-vector shows that we have also constructed a polyhedron for every V ≥ 4.
A pyramid is right if the line connecting the center of the polygon to the off vertex is perpendicular to the plane of the polygon. Otherwise the pyramid is oblique.
Similarly a prism is a way of constructing a polyhedron for each F ≥ 5 with an f-vector of (2F – 4, 3F – 6, F). The cube is a square prism. Note that a decagon prism has an f-vector of (20, 30, 12) which is the same as the f-vector of a dodecahedron. The example shows that the f-vector of a polyhedron doesn't necessarily tell us the number of edges each face has.
A prism is right if the off-polygon faces are perpendicular to the polygon faces. Otherwise the prism is oblique.
Polyhedral Dice
If we want the die to be fair, then the die should be face transitive. The Platonic solids are face transitive, but pyramids and prisms in general are not. Recall that a triangular pyramid is a tetrahedron and a square prism can be a cube.There is a type of polyhedron called a bipyramid which yields an infinite family of face transitive polyhedra. The vertices of a regular n-polygon is connected to two vertices off the plane of the polygon on opposite sides. For the polyhedron to be face transitive, the vertices must be equidistant from and perpendicular to the center of the n-polygon. The figure is (n + 2, 3n, 2n) for n ≥ 3. The octohedron is a bipyramid.
The pentagonal bipyramid gives us a way to construct a 10-sided die, but most 10-sided dice are a different polyhedron called the pentagonal trapezohedron. The faces are quadrilaterals and in particular kites. The f-vector is (2n + 2, 4n, 2n) for n ≥ 3. The triangular trapezohedron has a f-vector of (8, 12, 6) which is the same as the cube.
The trapezohedron shows that face transitive does not imply edge transitive or vertex transitive. Bipyramids other than the square bipyramid or octahedron also show this.
The tetrahedron notwithstanding, for a polyhedron to be useful as a die we want each face to be parallel to a face on the opposite side so that there is always a clear "up". Insisting that a bipyramid or trapezohedron have parallel faces places a constraint on the distance of the off-polygon vertices from the polygon. Update: or so I thought, but in fact the trapezohedron or bipyramid can have parallel faces regardless of the ratio of off-polygon vertex distance to polygon side length. And it should be emphasized that for a bipyramid to have parallel faces the polygon must have an even number of sides. The trapezohedron does not have this limitation.
The Catalan solids are another set of 13 face transitive polyhedra. One of these, the rhombic triacontahedron is used for 30-sided dice.
Euler's Characteristic
For a convex polyhedron, the following formula for the number of vertices, edges, and faces holds:V – E + F = 2
Polytope
A regular polygon is a two dimensional analog of a Platonic solid.Polytopes generalize polygons (in two dimensions) and polyhedra (in three dimensions) to n-dimensions.
A 4-polytope has 0-dimensional vertices, 1-dimensional edges, 2-dimensional faces, and 3-dimensional cells. The number of each can be represented by a f-vector with four elements: (V, E, F, C).
An n-polytope has n – 1 dimensional facets, n – 2 dimensional ridges, n – 3 dimensional peaks.
Sub-polytopes of any dimension can be called faces. If necessary to indicate the dimension they are called j-faces.
The extended f-vector of a polytope includes extra values on either end. One value, for dimension –1, represents the empty set. The other value, for dimension n, represents the polytope itself. These values are always 1. The cube has extended f-vector (1, 8, 12, 6, 1).
The formula for Euler's characteristic extends to convex polytopes and motivates our use of extended f-vectors. If fi is the number of faces of dimension t, then
$$ \sum_{i=–1}^n (–1)^i f_i = 0$$
Lattices and Flags
When studying a polyhedron such as the cube above we can create a graph called the face lattice of the polyhedron which shows which edges belong to which faces and which vertices belong to which edges.At the top of the graph we put the entire polyhedron and at the bottom we put the empty set. This makes the graph a mathematical lattice. Every two elements in the lattice have a unique least element which contains both of them and a unique greatest element contained by both of them. The extended f-vector is the number of elements in each row of the lattice from the bottom up.
Two polyhedra are combinatorially equivalent if their face lattices are isomorphic. The cube and the triangular trapezohedron are examples of combinatorially equivalent polyhedra. The dodecagon prism and the dodecahedron are not combinatorially equivalent even though their f-vectors are the same.
A flag is a sequence of "faces" of an n-polytope of increasing dimension: F- 1, F0, F1, ..., Fn, where each face is contained in the face that follows it in the sequence. The F-1 face is the "empty face" and the Fn face is the entire n-polytype.
A regular polytope is one where the symmetry group of the polytope acts transitively on the flags. This implies that the polytope is face, edge, and vertex transitive.
Ways to Number a Platonic Solid
The number of ways we can put n different numbers on the n faces of a Platonic solid is n! divided by the size of the alternating group of the solid.
| tetrahedron | 2 |
| cube | 30 |
| octohedron | 1680 |
| dodecahedron | 7,983,360 |
| icosahedron | 40,548,366,802,944,000 |
Six-sided dice are often numbered with the constraint that opposite sides must add to 7. With this constraint there are only two ways to number a six-sided die. If you hold a six-sided die so that the sides for 1, 2, and 3 are showing, if the numbers increase in a counter-clockwise direction the die is said to be right-handed, which is the way Western dice are numbered.
Net
A polyhedron net is a set of edge-connected polygons, which can be folded into a polyhedron. Polyhedra can be constructed by printing a net on paper, cutting it out, and then folding the edges to create the shape.
Assigned Reading
"Convex Polyhedra" by Alexandrov. The reader is allowed to consult an English translation.
Saturday, September 16, 2017
Rolling 1–3 with a d6
How would you generate a random number in the range 1–3 uniformly using a d6?
There are at least three ways which seem natural to me:
Most people, I imagine, would divide by two and round up.
Rounding strikes me as a trait of a poorly designed game. I prefer to use modular arithmetic.
There is the problem that the modulus operator returns a number in the range 0–2, at least when we are computing a number modulo 3. We can add 1 to the result, but I prefer to use 3 in place of 0. After all 0 and 3 are the same modulo 3.
There are at least three ways which seem natural to me:
d6 ⌈d6/2⌉ d6%3+1 d6%3 replace 0 w/ 3
---- ------ ------ -------------------
1 1 2 1
2 1 3 2
3 2 1 3
4 2 2 1
5 3 3 2
6 3 1 3
Most people, I imagine, would divide by two and round up.
Rounding strikes me as a trait of a poorly designed game. I prefer to use modular arithmetic.
There is the problem that the modulus operator returns a number in the range 0–2, at least when we are computing a number modulo 3. We can add 1 to the result, but I prefer to use 3 in place of 0. After all 0 and 3 are the same modulo 3.
Sunday, August 27, 2017
Goblin Hit Dice
Do you recognize this stat block?
FREQUENCY: Uncommon
NO. APPEARING: 40–400
ARMOR CLASS: 6
MOVE: 6"
HIT DICE: 1–7 Hit points
% IN LAIR: 40%
TREASURE TYPE: Individuals K, Lair C
DAMAGE/ATTACK: 1–6 or by weapon
SPECIAL ATTACKS: Nil
SPECIAL DEFENSES: Nil
MAGIC RESISTANCE: Standard
INTELLIGENCE: Average (low)
ALIGNMENT: Lawful evil
SIZE: S (4' tall)
There isn't much remarkable here. The hit dice entry has excited commentary in our group, though. 1–7 hit points. How do you roll that?
In OD&D a goblin was 1 - 1 hit points (i.e. 1d6 - 1). This can result in zero hit points.
Maybe you roll d8 and re-roll on 8. There is evidence that Gygax used similar methods. For example, he allowed player characters to re-roll if they got one hit point. See this post on Gary's House Rules.
Our house style is to resolve with single rolls. We don't role-play; we roll-play. Roll-players have enough dice and they design games correctly for the dice they have.
There are non-uniform approximations, such as to roll d8 and replace an 8 with a 7. Of course, you could also roll d8-1, and replace a 0 with 1. The fact that there are at least two ways to do this seems unaesthetic.
To measure the quality of a non-uniform approximation, let's use the mean absolute deviation of the approximation from the uniform distribution. Lower numbers are better. For "roll d8 and replace 8 with 7", the MAD from uniform is:
$$ \frac{6 \cdot |\frac{1}{8} - \frac{1}{7}| + |\frac{1}{4} - \frac{1}{7}|}{7} \approx 0.031 $$
One could use 2d4-1 to generate a 1–7. The MAD from uniform is:
$$ \frac{2 \cdot |\frac{1}{16} - \frac{1}{7}| + 2 \cdot |\frac{2}{16} - \frac{1}{7}| + 2 \cdot |\frac{3}{16} - \frac{1}{7}| + |\frac{4}{16} - \frac{1}{7}|} {7} \approx 0.056$$
There is an idea I like which could be called "if high, then low". Roll a d8 and a d6 simultaneously. Use the d8 unless it rolls an 8, in which case use the d6. The MAD from uniform is:
$$ \frac{6 \cdot |\frac{1}{8} + \frac{1}{8} \cdot \frac{1}{6} - \frac{1}{7}| + |\frac{1}{8} - \frac{1}{7} |}{7} \approx 0.005$$
Another proposal. An encounter says there are 12 goblins, but if any of them are determined to have zero hit points, rule that they are already dead!
I analyzed cave D of "The Keep on the Borderlands" to get a hint of how to generate goblin hit points. This module was written by Gygax himself. There are 28 goblins, not counting the chieftain, females, and young. Here is a distribution of their hit points.
I'm not sure how Gygax randomly generated numbers with this distribution. If you have any ideas, shoot me an email.
We like to stick to the standard six shapes for dice: d4, d6, d8, d10, d12, d20. The Platonic solids and the bastard interloper known to science as the pentagonal trapezohedron. Looking over these new dice shapes makes us guffaw and chortle and a few other synonyms. We see useless bits of dice bag clutter which deceive people into rolling them by mistake. But goblins have made us reconsider one shape. Or possibly two shapes.
The orange die is a truncated sphere. The manufacturer supposedly found 7 maximally separated points on a sphere and then truncated the sphere at those points.
The other two dice are pentagonal prisms. Did the manufacturer, Gamescience, take an empirical approach to choosing the height of the prism so that the die rolls fair?
The p-values are 0.38, 0.23, and 0.08, suggesting the dice are fair enough for casual play. The Gamescience dice put the 6 and the 7 on the pentagons. 6s and 7s look to be over-represented in my Gamescience rolls, even if we showed the effect is not statistically significant for this sample size. It might be the truncated sphere is the better choice.
Here are suggestions from Gamescience on how to use your new 7-sided die:
FREQUENCY: Uncommon
NO. APPEARING: 40–400
ARMOR CLASS: 6
MOVE: 6"
HIT DICE: 1–7 Hit points
% IN LAIR: 40%
TREASURE TYPE: Individuals K, Lair C
DAMAGE/ATTACK: 1–6 or by weapon
SPECIAL ATTACKS: Nil
SPECIAL DEFENSES: Nil
MAGIC RESISTANCE: Standard
INTELLIGENCE: Average (low)
ALIGNMENT: Lawful evil
SIZE: S (4' tall)
There isn't much remarkable here. The hit dice entry has excited commentary in our group, though. 1–7 hit points. How do you roll that?
In OD&D a goblin was 1 - 1 hit points (i.e. 1d6 - 1). This can result in zero hit points.
Maybe you roll d8 and re-roll on 8. There is evidence that Gygax used similar methods. For example, he allowed player characters to re-roll if they got one hit point. See this post on Gary's House Rules.
Our house style is to resolve with single rolls. We don't role-play; we roll-play. Roll-players have enough dice and they design games correctly for the dice they have.
There are non-uniform approximations, such as to roll d8 and replace an 8 with a 7. Of course, you could also roll d8-1, and replace a 0 with 1. The fact that there are at least two ways to do this seems unaesthetic.
To measure the quality of a non-uniform approximation, let's use the mean absolute deviation of the approximation from the uniform distribution. Lower numbers are better. For "roll d8 and replace 8 with 7", the MAD from uniform is:
$$ \frac{6 \cdot |\frac{1}{8} - \frac{1}{7}| + |\frac{1}{4} - \frac{1}{7}|}{7} \approx 0.031 $$
One could use 2d4-1 to generate a 1–7. The MAD from uniform is:
$$ \frac{2 \cdot |\frac{1}{16} - \frac{1}{7}| + 2 \cdot |\frac{2}{16} - \frac{1}{7}| + 2 \cdot |\frac{3}{16} - \frac{1}{7}| + |\frac{4}{16} - \frac{1}{7}|} {7} \approx 0.056$$
There is an idea I like which could be called "if high, then low". Roll a d8 and a d6 simultaneously. Use the d8 unless it rolls an 8, in which case use the d6. The MAD from uniform is:
$$ \frac{6 \cdot |\frac{1}{8} + \frac{1}{8} \cdot \frac{1}{6} - \frac{1}{7}| + |\frac{1}{8} - \frac{1}{7} |}{7} \approx 0.005$$
Another proposal. An encounter says there are 12 goblins, but if any of them are determined to have zero hit points, rule that they are already dead!
I analyzed cave D of "The Keep on the Borderlands" to get a hint of how to generate goblin hit points. This module was written by Gygax himself. There are 28 goblins, not counting the chieftain, females, and young. Here is a distribution of their hit points.
I'm not sure how Gygax randomly generated numbers with this distribution. If you have any ideas, shoot me an email.
We like to stick to the standard six shapes for dice: d4, d6, d8, d10, d12, d20. The Platonic solids and the bastard interloper known to science as the pentagonal trapezohedron. Looking over these new dice shapes makes us guffaw and chortle and a few other synonyms. We see useless bits of dice bag clutter which deceive people into rolling them by mistake. But goblins have made us reconsider one shape. Or possibly two shapes.
The orange die is a truncated sphere. The manufacturer supposedly found 7 maximally separated points on a sphere and then truncated the sphere at those points.
The other two dice are pentagonal prisms. Did the manufacturer, Gamescience, take an empirical approach to choosing the height of the prism so that the die rolls fair?
The p-values are 0.38, 0.23, and 0.08, suggesting the dice are fair enough for casual play. The Gamescience dice put the 6 and the 7 on the pentagons. 6s and 7s look to be over-represented in my Gamescience rolls, even if we showed the effect is not statistically significant for this sample size. It might be the truncated sphere is the better choice.
Here are suggestions from Gamescience on how to use your new 7-sided die:
Sunday, January 8, 2017
Testing Dice for Fairness: Part II
The power of the fair die fair test.
Previously a method was outlined for testing a die for fairness.
The test calls for rolling the die a large number of times, computing a p-value, and classifying the die as unfair if the p-value is below a significance threshold.
The example uses 100 trials and a significance threshold of .05. It doesn't mention why these numbers are chosen.
The chance of making the first error—rejecting a fair die—is our significance threshold. To reduce the chance of making the first error we make the significance threshold low. A threshold of .05 is a bit high; our test has a 1 in 20 chance of rejecting a fair die!
Previously a method was outlined for testing a die for fairness.
The test calls for rolling the die a large number of times, computing a p-value, and classifying the die as unfair if the p-value is below a significance threshold.
The example uses 100 trials and a significance threshold of .05. It doesn't mention why these numbers are chosen.
The Two Types of Error
To intelligently choose the numbers, we have to consider two types of mistakes. We might reject a fair die, or we might accept an unfair die.The chance of making the first error—rejecting a fair die—is our significance threshold. To reduce the chance of making the first error we make the significance threshold low. A threshold of .05 is a bit high; our test has a 1 in 20 chance of rejecting a fair die!
The Power of a Test
The power of a test is the chance of not making the second error. That is, the power is the chance of rejecting an unfair die.
The power of a test usually depends on how unfair the die is. The more lopsided the chances, the easier it is to detect the unfairness.
An Approximation
Because of the dependence on the amount of unfairness, we can't represent the power as a single percentage. It is natural to characterize an unfair die as a categorical distribution with n - 1 free parameters where n is the number of faces. Even in the case of a d6 we can't plot the power as a function of the free parameters: there are too many.
For this reason let's only consider unfair dice characterized by a single parameter which is the probability of rolling the most likely face. All other faces are assumed to be equally likely.
The Power of the .05 Significance Test
Now we can plot the power of a test, given the probability of the mostly likely face.
If we increase the number of trials, the chance of detecting an unfair die goes up. Even if we only do 100 trials, the chance of detecting an unfair die where one of the faces is twice as likely as expected is about 90%.
I would like the percentage to be higher, but when I think the about the effort of making 200 trials instead, the percentage seems acceptable.
I would like the percentage to be higher, but when I think the about the effort of making 200 trials instead, the percentage seems acceptable.
The code used for calculating the power of a test is online. It uses the Monte Carlo method as discussed previously. The number of Monte Carlo trials was 10,000 which gives a 95% confidence our estimate is within 1%.
The Power of the .01 Significance Test
What if we decide to use a .01 significance level instead?
The chart doesn't change much. The chance of detecting the die where one of the faces is twice as likely as expected is now 77%.
Sunday, December 25, 2016
Cloud Giant Damage
A general method for converting range notation to dice notation.
My first copy of the game was a Holmes edition with geomorphs.
The rules have staying power. This summer I met a Holmes player born after they went out of print!
And so the questions we asked thirty-five years ago are still getting asked. A classic is how to roll the 6–63 damage that cloud giants deal out:
The experienced referee makes this roll with a 3d20+3, but—and this is another example of the ambiguity of range notation—a 19d4-13 will also work.
One wonders whether there are other ways to make the roll. Also, is there an easy way to find those ways?
If we use a single type of die, then we must use a d20 or a d4 as above. If we allow more than one type of die in the roll, then 6d10+d4-1 works.
In fact, if we use more than one type of die, there are 164 ways to roll cloud giant damage.
To find them all, observe a fact about the difference between the largest and smallest value of each die; a d6 produces results in the range 1–6 and has a difference of 5. When multiple dice are summed, the difference of the sum is the sum of the differences of each die used; 2d6 has a range of 2–12 and a difference of 10; 3d6 has a range of 3–18 and a difference of 15.
The rule holds if we use more than one type of die: a d4 has a range of 1–4 and a difference of 3. A d4+d6 roll has a range of 2–10 and a difference of 3 + 5 = 8.
To find out how many ways there are to roll 6–63, we ask ourselves how many ways there are to sum to the difference of 57 given the differences we have available: 3 (d4), 5 (d6), 7 (d8), 9 (d10), 11 (d12), and 19 (d20). This is the unbounded knapsack problem where we are only interested in solutions which fill the "knapsack" completely.
The complete list of ways to roll cloud giant damage is here.
Code for finding ways to roll an arbitrary range is here.
My first copy of the game was a Holmes edition with geomorphs.
The rules have staying power. This summer I met a Holmes player born after they went out of print!
And so the questions we asked thirty-five years ago are still getting asked. A classic is how to roll the 6–63 damage that cloud giants deal out:
One wonders whether there are other ways to make the roll. Also, is there an easy way to find those ways?
If we use a single type of die, then we must use a d20 or a d4 as above. If we allow more than one type of die in the roll, then 6d10+d4-1 works.
In fact, if we use more than one type of die, there are 164 ways to roll cloud giant damage.
To find them all, observe a fact about the difference between the largest and smallest value of each die; a d6 produces results in the range 1–6 and has a difference of 5. When multiple dice are summed, the difference of the sum is the sum of the differences of each die used; 2d6 has a range of 2–12 and a difference of 10; 3d6 has a range of 3–18 and a difference of 15.
The rule holds if we use more than one type of die: a d4 has a range of 1–4 and a difference of 3. A d4+d6 roll has a range of 2–10 and a difference of 3 + 5 = 8.
To find out how many ways there are to roll 6–63, we ask ourselves how many ways there are to sum to the difference of 57 given the differences we have available: 3 (d4), 5 (d6), 7 (d8), 9 (d10), 11 (d12), and 19 (d20). This is the unbounded knapsack problem where we are only interested in solutions which fill the "knapsack" completely.
The complete list of ways to roll cloud giant damage is here.
Code for finding ways to roll an arbitrary range is here.
Saturday, December 24, 2016
Binomial Parameter Estimates
More on estimating class qualification probabilities.
The referee might have a sense for how easy it should be to roll up a prestige class. Does he want the players all playing paladins and rangers instead of fighters? If so, he should consider the chances listed in the previous post. The 4d6kh3 with re-arrangement method gives the best chances overall.
The Monte Carlo method is slick! It is easy to understand. Complicated mathematics is avoided.
Monte Carlo can be used to verify complicated mathematics. After writing code to do the exact calculation, I wrote code which uses Monte Carlo to make sure the exact code is in the right ballpark.
Often it isn't enough to get an estimate; we also have specify how accurate it is. We can increase our accuracy by doing more rolls. For example, we will get a better estimate of the chance of a paladin if we roll 1000 characters instead of 100 characters. It is natural to ask how many characters must we roll to get an answer which is accurate enough for our purpose.
$$p \pm z_{1 - \frac{α}{2}} \sqrt{\frac{p \cdot (1 - p)}{n}}$$Here n is the number of characters generated, p is the observed fraction, and α is the chance of being outside the confidence interval. When α is 5%, z1-α/2 is 1.96. In R one can compute z1-α/2 with
The normal approximation suggests that if we increase the number of simulations 10-fold, the length of the confidence interval will shrink to about 0.32 of its previous size.
The normal approximation doesn't work well when the observed fraction p is close to zero or 1. For example, when n is 100 and p is .01, the 95% confidence interval is [-.95%, 2.95%] even though we know a negative value is not possible. This is a consequence of using the normal distribution as an approximation for a distribution with non-negative support.
In the extreme cases where p is exactly 0 or 1, the normal approximation gives an obviously invalid interval with zero length. The usual advice is to never use the normal approximation when there are fewer than 5 successes or 5 failures. That is, there should be at least 5 characters which qualify as a paladin and 5 characters which don't.
$$\frac{1}{1 + \frac{1}{n}z_{1-α/2}^2} \bigg[p + \frac{1}{2n} z_{1-α/2}^2 \pm z \sqrt{\frac{1}{n} p (1 - p) + \frac{1}{4n^2} z_{1-α/2}^2} \bigg]$$
When estimating a binomial parameter, the beta distribution is convenient because it makes computation of the posterior easy. The beta distribution has two parameters. If the prior has parameters α and β and we observe m successes in n trials, then the posterior is a beta distribution with parameters α + m and β + n - m. We can think of the parameters as tallies of the number of successes and failures we observe.
How should α and β be chosen for the prior? If we set them both to 1, then the prior is identical to the uniform distribution. That is, we are saying that before we look at the data we think each possible value for the parameter is equally likely. For those who know information theory, the beta distribution with parameters (1, 1) is the beta distribution with highest entropy. Such a prior, incidentally, was how Laplace solved the sunrise problem.
Suppose we decide to start with a beta (1, 1) prior. We roll 100 characters and 35 of them qualify. Then the posterior parameters are (36, 66). We can use R to compute the chance the actual probability is within any interval. For example that chance that the true probability is inside [.32, .38] is 47.4%:
If we think we already know the mean and variance for the distribution, we can use them to set the parameters of the prior. Here is how to use Mathematica and the formulas for the mean and variance to solve for the parameters:
Here are the formulas for the parameters, given mean μ and variance σ2:
$$α = \frac{μ^2 - μ^3 - μ σ^2}{σ^2}$$ $$β = \frac{(-1 + μ) (-μ + μ^2 + σ^2)}{σ^2}$$
Choosing a Character Attribute Generation Method
On p. 11 of the DMG four alternatives for generating character attributes are given. How should a referee decide which one to use?The referee might have a sense for how easy it should be to roll up a prestige class. Does he want the players all playing paladins and rangers instead of fighters? If so, he should consider the chances listed in the previous post. The 4d6kh3 with re-arrangement method gives the best chances overall.
Did the Designers Know the Odds?
If you asked the designers forty years ago to guess the chance of rolling a paladin, how close would they have been? The calculation requires writing code and running it on a modern computer, so the exact chance was probably unknown in the 1970s. Still, the designers could have made a reasonable guess just by rolling lots of characters.
Monte Carlo Method
To estimate the chance of rolling a class, the designers could have rolled 100 characters and counted how many of them qualified. If 35 of them qualified, the estimated chance is 35%. This is the Monte Carlo method applied to the binomial parameter estimation problem.The Monte Carlo method is slick! It is easy to understand. Complicated mathematics is avoided.
Monte Carlo can be used to verify complicated mathematics. After writing code to do the exact calculation, I wrote code which uses Monte Carlo to make sure the exact code is in the right ballpark.
Often it isn't enough to get an estimate; we also have specify how accurate it is. We can increase our accuracy by doing more rolls. For example, we will get a better estimate of the chance of a paladin if we roll 1000 characters instead of 100 characters. It is natural to ask how many characters must we roll to get an answer which is accurate enough for our purpose.
Normal Approximation Interval
One way to represent the accuracy of an estimate is with a confidence interval. For binomial parameter estimation, one way to get a confidence interval is with the normal approximation:$$p \pm z_{1 - \frac{α}{2}} \sqrt{\frac{p \cdot (1 - p)}{n}}$$Here n is the number of characters generated, p is the observed fraction, and α is the chance of being outside the confidence interval. When α is 5%, z1-α/2 is 1.96. In R one can compute z1-α/2 with
qnorm(1-alpha/2)
The normal approximation suggests that if we increase the number of simulations 10-fold, the length of the confidence interval will shrink to about 0.32 of its previous size.
The normal approximation doesn't work well when the observed fraction p is close to zero or 1. For example, when n is 100 and p is .01, the 95% confidence interval is [-.95%, 2.95%] even though we know a negative value is not possible. This is a consequence of using the normal distribution as an approximation for a distribution with non-negative support.
In the extreme cases where p is exactly 0 or 1, the normal approximation gives an obviously invalid interval with zero length. The usual advice is to never use the normal approximation when there are fewer than 5 successes or 5 failures. That is, there should be at least 5 characters which qualify as a paladin and 5 characters which don't.
Wilson Score Interval
At the cost of some extra complexity, there is a formula which works better when p is near zero or one:$$\frac{1}{1 + \frac{1}{n}z_{1-α/2}^2} \bigg[p + \frac{1}{2n} z_{1-α/2}^2 \pm z \sqrt{\frac{1}{n} p (1 - p) + \frac{1}{4n^2} z_{1-α/2}^2} \bigg]$$
Beta Distribution
We can look for a distribution which describes the possibilities for the parameter we are estimating. This is more informative than a confidence interval. Bayesian statistics gives us a way to do this, but we must start with an initial distribution, the prior, which is somewhat arbitrarily chosen. We use the data we observe and the prior to compute the posterior distribution, which is the distribution we seek.When estimating a binomial parameter, the beta distribution is convenient because it makes computation of the posterior easy. The beta distribution has two parameters. If the prior has parameters α and β and we observe m successes in n trials, then the posterior is a beta distribution with parameters α + m and β + n - m. We can think of the parameters as tallies of the number of successes and failures we observe.
How should α and β be chosen for the prior? If we set them both to 1, then the prior is identical to the uniform distribution. That is, we are saying that before we look at the data we think each possible value for the parameter is equally likely. For those who know information theory, the beta distribution with parameters (1, 1) is the beta distribution with highest entropy. Such a prior, incidentally, was how Laplace solved the sunrise problem.
Suppose we decide to start with a beta (1, 1) prior. We roll 100 characters and 35 of them qualify. Then the posterior parameters are (36, 66). We can use R to compute the chance the actual probability is within any interval. For example that chance that the true probability is inside [.32, .38] is 47.4%:
> pbeta(.38, 36, 66) - pbeta(.32, 36, 66)
[1] 0.4739478
If we think we already know the mean and variance for the distribution, we can use them to set the parameters of the prior. Here is how to use Mathematica and the formulas for the mean and variance to solve for the parameters:
Solve[{μ == α/(α+β),
σ^2 == α β/((α+β)^2 * (α+β+1))},
{α,β}]
Here are the formulas for the parameters, given mean μ and variance σ2:
$$α = \frac{μ^2 - μ^3 - μ σ^2}{σ^2}$$ $$β = \frac{(-1 + μ) (-μ + μ^2 + σ^2)}{σ^2}$$
Hoeffding's Inequality
Hoeffding's Inequality is invaluable when doing Monte Carlo estimates. It directly tells us how much data we need to ensure our estimate is near the true value with a given probability:
$$ \mathrm{P}\big(\big|p - \mathrm{E}[p]\big| \geq t\big) \leq 2 e^{-2nt^2}$$
Here p is the estimate, E[p] is the true value, t is half the length of our confidence interval, and n is the number of observations. If we know the probability and interval we want, we recast the inequality as:
$$ \frac{\mathrm{ln} \frac{2}{\mathrm{P}(|p - \mathrm{E}[p]| \geq t)}}{2 t^2} \leq n$$ If we want to be 95% certain the estimate is within a tenth of a percent, we get this lower bound on n:
$$ \frac{\mathrm{ln} \frac{2}{.05}}{2(0.001)^2} \approx 9.22 \times 10^5 \leq n$$ The number might seem discouragingly large, but generating a million characters is feasible on modern computers; just write code to do it!
$$ \frac{\mathrm{ln} \frac{2}{\mathrm{P}(|p - \mathrm{E}[p]| \geq t)}}{2 t^2} \leq n$$ If we want to be 95% certain the estimate is within a tenth of a percent, we get this lower bound on n:
$$ \frac{\mathrm{ln} \frac{2}{.05}}{2(0.001)^2} \approx 9.22 \times 10^5 \leq n$$ The number might seem discouragingly large, but generating a million characters is feasible on modern computers; just write code to do it!
Friday, December 16, 2016
Chance of Rolling a Class
e.g. how hard is it to roll up a paladin?
It's an obvious question. What is the chance of rolling a character that qualifies for a given class?
The odds of a character qualifying for a given class by this method are:
We knew that rolling up a paladin was a long shot, but rolling up a monk is harder still. Your chance of rolling up a bard are 1 in 58,140.
The chances of rolling up a character according to these four methods are:
Overall, method I is the best, though method II is best for an assassin or ranger and method III is best for a bard.
It's an obvious question. What is the chance of rolling a character that qualifies for a given class?
Minimum Attributes
The chance depends on the minimum attributes for the class. Let's use the first edition values:minimum attributes per Players Handbook (1978)
Str Int Wis Dex Con Char
cleric: 3 3 9 3 3 3
druid: 3 3 12 3 3 15
fighter: 9 3 3 3 7 3
paladin: 12 9 13 3 9 17
ranger: 13 13 14 3 14 3
magic-user: 3 9 3 6 3 3
illusionist: 3 15 3 16 3 3
thief: 3 3 3 9 3 3
assassin: 12 11 3 12 3 3
monk: 15 3 15 15 11 3
bard: 15 12 15 15 10 15
Odds by Class: 3d6
The original method of rolling up attributes is to use 3d6 for each attribute. The attributes are generated in the order of strength, intelligence, wisdom, dexterity, constitution, and charisma. No rearrangement is allowed.The odds of a character qualifying for a given class by this method are:
assassin: 7.031%
bard: 0.002%
cleric: 74.074%
druid: 3.472%
fighter: 67.215%
illusionist: 0.429%
magic-user: 70.645%
monk: 0.040%
paladin: 0.099%
ranger: 0.176%
thief: 74.074%
We knew that rolling up a paladin was a long shot, but rolling up a monk is harder still. Your chance of rolling up a bard are 1 in 58,140.
Odds by Class: DMG Methods
Some prestige classes might seem pointless, given how unlikely it is to roll a character that qualifies to be one. However, the DMG allows, at referee discretion, one of four methods for rolling attributes, each producing higher attributes on average. For example, in method I the player rolls the six attributes with 4d6kh3 and then rearranges the attributes as desired.The chances of rolling up a character according to these four methods are:
(METHOD I) 4d6kh3 PLAYER-ARRANGED:
assassin: 93.616%
bard: 1.581%
cleric: 100.000%
druid: 78.245%
fighter: 100.000%
illusionist: 35.782%
magic-user: 100.000%
monk: 13.641%
paladin: 25.169%
ranger: 30.470%
thief: 100.000%
(METHOD II) 3d6 BEST-OF-12 PLAYER-ARRANGED:
assassin: 96.180%
bard: 1.887%
cleric: 100.000%
druid: 68.206%
fighter: 100.000%
illusionist: 24.302%
magic-user: 100.000%
monk: 9.231%
paladin: 18.704%
ranger: 33.984%
thief: 100.000%
(METHOD III) 3d6 BEST-OF-6 EACH ATTRIBUTE:
assassin: 87.053%
bard: 3.572%
cleric: 99.970%
druid: 41.544%
fighter: 99.970%
illusionist: 10.936%
magic-user: 99.970%
monk: 8.487%
paladin: 8.324%
ranger: 29.788%
thief: 99.970%
(METHOD IV) BEST-OF-12-CHARACTERS 3d6:
assassin: 58.309%
bard: 0.021%
cleric: 100.000%
druid: 34.562%
fighter: 100.000%
illusionist: 5.024%
magic-user: 100.000%
monk: 0.475%
paladin: 1.179%
ranger: 2.097%
thief: 100.000%
Overall, method I is the best, though method II is best for an assassin or ranger and method III is best for a bard.
Code
The code for calculating the probabilities is on GitHub.Sunday, December 11, 2016
The Arch-Mage Casts a Fireball
Fireball damage: its calculation and its distribution.
The spell components are ready:
This is what the game is about. I cast the spell:
Look at all the damage! But how much damage, exactly? My enthusiasm is tempered by the prospect of adding up the pips.
Fortunately, as a wizard I am familiar with the arcane rule of tens. Prestidigitation ensues and the hidden number is revealed:
Apropos of nothing, I timed myself on a few more rolls:
The spell components are ready:
Fortunately, as a wizard I am familiar with the arcane rule of tens. Prestidigitation ensues and the hidden number is revealed:
Apropos of nothing, I timed myself on a few more rolls:
- 65 hit points: 22.2s
- 63 hit points: 19.6s
- 56 hit points: 28.3s
- 63 hit points: 28.3s
- 62 hit points: 24.9s
An average of 24.7s spent to get a number that was usually within a couple hit points of 63.
A Shortcut?
When younger I was tempted to roll a single d6, multiply it by 18, and be done with it. That is, use a d6 × 18 roll in place of the 18d6. However, even then I couldn't escape the feeling that this was not an equivalent roll. I could see that the latter method always produces a multiple of 18, but I wondered if it wasn't close enough all the same.
Both methods cause 63 hit points of damage on average, so in that respect they are the same. But if the mean is all we care about, why roll dice at all?
Plotting the probability mass distributions is a good way to show how different rolls are. Here the 18d6 distribution is in red and the d6 × 18 distribution is in blue:
The standard deviations are 7.2 and 30.7, a large difference.
According to Chebyshev's inequality, the chance of being more than k standard deviations from the mean can never be greater than 1/k2. Thus, in the case of the 18d6 distribution, the chance the value is less than 49 or more than 77 is no more than 25%. The same probability for the d6 × 18 distribution is 66⅔%.
Chebyshev's inequality is a rough upper bound that works for any distribution for which we know the mean and standard deviation. If we know the distribution, we can do a summation or integration to get the exact probability; for the 18d6 distribution the exact probability is less than 5%.
What if we allow two rolls of a d6? I wrote some code which searches for an expression with the same mean and the nearest standard deviation. To keep things simple the first d6 always gets multiplied by a non-negative integer and the second d6 is taken as is. With those constraints here are the best approximations:
Here is how well the approximation works for the arch-mage; the 18d6 distribution is in red and the d6×3 + d6 + 49 in blue:
Plotting the probability mass distributions is a good way to show how different rolls are. Here the 18d6 distribution is in red and the d6 × 18 distribution is in blue:
The standard deviations are 7.2 and 30.7, a large difference.
Chebyshev's Inequality
At this point, I'm going digress in an attempt to make the standard deviation seem useful.According to Chebyshev's inequality, the chance of being more than k standard deviations from the mean can never be greater than 1/k2. Thus, in the case of the 18d6 distribution, the chance the value is less than 49 or more than 77 is no more than 25%. The same probability for the d6 × 18 distribution is 66⅔%.
Chebyshev's inequality is a rough upper bound that works for any distribution for which we know the mean and standard deviation. If we know the distribution, we can do a summation or integration to get the exact probability; for the 18d6 distribution the exact probability is less than 5%.
A Better Shortcut?
Back to rolling fireball damage.What if we allow two rolls of a d6? I wrote some code which searches for an expression with the same mean and the nearest standard deviation. To keep things simple the first d6 always gets multiplied by a non-negative integer and the second d6 is taken as is. With those constraints here are the best approximations:
1d6: d6 × 0 + d6 + 0
2d6: d6 × 1 + d6 + 0
3d6: d6 × 0 + d6 + 7
4d6: d6 × 1 + d6 + 7
5d6: d6 × 2 + d6 + 7
6d6: d6 × 1 + d6 + 14
7d6: d6 × 2 + d6 + 14
8d6: d6 × 3 + d6 + 14
9d6: d6 × 2 + d6 + 21
10d6: d6 × 3 + d6 + 21
11d6: d6 × 2 + d6 + 28
12d6: d6 × 3 + d6 + 28
13d6: d6 × 4 + d6 + 28
14d6: d6 × 3 + d6 + 35
15d6: d6 × 4 + d6 + 35
16d6: d6 × 3 + d6 + 42
17d6: d6 × 4 + d6 + 42
18d6: d6 × 3 + d6 + 49
19d6: d6 × 4 + d6 + 49
20d6: d6 × 5 + d6 + 49
21d6: d6 × 4 + d6 + 56
22d6: d6 × 5 + d6 + 56
23d6: d6 × 4 + d6 + 63
24d6: d6 × 5 + d6 + 63
Here is how well the approximation works for the arch-mage; the 18d6 distribution is in red and the d6×3 + d6 + 49 in blue:
Subscribe to:
Comments
(
Atom
)


































