# How to approximate decaying probability distributions with few dice?

I am looking for ways to generate a probability distribution using dice which produces results that are skewed towards lower numbers, ideally as some kind of smooth decay.

For example, imagine a random encounter table sorted by difficulty, in which rolling would ensure that low-danger encounters are seen more often than high-risk ones, without requiring to fiddle around with number-ranges for each entry.

While generating uniform probabilities is easy (pick any die), and bell curves are also quickly doable with few dice (3D6 gives you a good curve, over almost the exact same range as D20), I am struggling to come up with an easy (requiring little brainpower) system requiring few dice (say less than four).

While the Savage Worlds exploding dice system can generate a somewhat exponential distributions over its success/raise scale, it falls off extremely quickly when only counting successes (that is, divide the result by four and round down), and fails in being smooth when looking at the raw numbers, being uniform over each interval and having a gap at the maximum number of the die.

Rolling a fistful of D6 and counting the number of sixes produces a smooth Poisson distribution, but fails at the number of dice requirement. When usually rolling 1D20, suddenly taking out the Shadowrun dice bag would be weird.

Are there any other ways you can think of that would quickly generate a smooth decaying distribution (say, over an interval of 1-10 approximately)?

• Including graphs of the type of decay you are interested in might be a good idea to clearly convey what you are thinking. Do you want something Poisson-esque, or would linear decay also work? Mar 3 '20 at 14:30
• For the time being, I don't want to introduce further requirements to the distribution except that higher numbers should appear less often than lower ones, as I don't want to stop people from posting something just because it fails to be perfect. So yes, linear decay would work. Mar 3 '20 at 14:33
• your problem statement makes me think of a 1/x shape ... anyway, glad to see that you have attracted answers, since this kind of table is of interest to me. Mar 3 '20 at 15:11

# Steal the "Disadvantage" method from 5e.

Take any number of dice, where the highest number on the die is the range you want (i.e. - a d20 for 1-20), and roll them all. Use the lowest value. More dice skew the lowest value closer to 1.

For a quirkier method that would be mildly more mysterious to any on-lookers

## Absolute Value and Dice Subtraction

For example, 2d6 - 2d4 (anydice), heavily weights to 1, then goes down from there.

While this isn't a perfect solution (0 and 4 have similar probabilities), it does have the value of being easy to do in person on the fly.

• The first method (roll N dice, take the lowest) is (inverted) the method the Forged in the Dark system uses, to give results that cluster toward one end as N increases. Mar 3 '20 at 16:29
• For slightly different distribution you can try things like lowest of 1d20 and 1d12 - it will generate numbers 1-12 with low ones being more frequent, but less skewed than lowest of 2d12. Mar 5 '20 at 8:35

# Difference between the highest two of a pool

You can use a fairly simple roll to achieve this. You roll $$\X\$$d$$\N\$$ where $$\X > 2\$$ and $$\N\$$ is the length of your range. You then take the two highest results and take the difference between them (take the difference so it is positive). You can test the probabilities with this Anydice function:

function: diff D:s {
result: 1@D - 2@D
}


For 2d10 this gives a linear decay ranging from 0 → 9, excepting for the blip at 0.

Increasing to 3d10 gives a curved decay:

And increasing it further to 4d10 increases the curvature (sharpens the decay, making higher result less likely):

Use integer division; that is, division where you keep only the whole number part. For example, d6/d6 or d10/d10

https://anydice.com/program/1a38f Those are quite easy to calculate, or, since the outcome is very limited, you can just print a cheat sheet with the results.

• @KorvinStarmast Imagine the first d6 returns 1. If the second d6 returns anything in the range [2..6], in that case first/second = 0,.... --- whose integer part is 0. This also happens if the first d6 return 2 and the second one returns anything in the range [3...6]. And so on. Of all 2 dices possible results, there is almost half of them such as first/second < 1 (strictly lower than 1). Mar 4 '20 at 19:42
• OK, with round down, got it. Mar 4 '20 at 19:44

You can exactly simulate a 50% exponential decay with a few "exponentially exploding" d8s. You can generate values from 1-10 with at most three rolls.

To treat a d8 as exponentially exploding, use these values for the faces:

• 1-4 → 1
• 5-6 → 2
• 7 → 3
• 8 → Explode! 3 plus another roll of the die. Or just 4 if you don't want to roll any further.

Here's the output of an Anydice program that simulates up to three rolls (up to two explosions):

You could keep rolling beyond two explosions if you want. It might theoretically be tedious, but it's so rare that you'll need more than two or three rolls that it probably doesn't matter.

• A bit modified version of this would get slightly less precise exponential decay, but using a D20 and fewer rolls might be an advantage. 1-10: 1, 11-15:2, 16-17:3, 18-19:4, 20:4+roll again.
– Nyos
Mar 5 '20 at 13:52
• @Nyos If you have (access to) a 3D printer and can modify a downloaded object file a little, you could make a die marked this way. The roll-again would be 4+, 4 in a star or circle or some other special icon. Mar 5 '20 at 14:03
• @ZeissIkon: Well, I don't have a 3D printer, but I have a CNC engraver/laser cutter instead. Also, I've ordered some blank dice from Aliexpress, so I could make a couple of this custom dice if I wanted to. But I'm not the OP who wanted this.
– Nyos
Mar 5 '20 at 14:21
• @Nyos I was really using "generic you" to mean anyone, but engraving blank dice ought to work as well. Mar 5 '20 at 14:28

You need logarithmic dice.

Roll, say, a D100 and a D 6, read the dice with the D6 as (1-2-3 = 0, 4-5 = 1, 6 = 2) as the mantissa (whole number portion) and the percentile as the decimal, so you get a result that looks like, say, 0.69 or 1.24, then use an antilog function (on a calculator, it looks like 10^x, usually) to convert your result into an actual number, which will run from 1 to 1000 (in the above example) with a very strong skew toward the low end.

The resulting curve will be smooth, to the limits of your dice granularity. You can adjust the curve by adjusting how you read the D6, changing to another die size, or just eliminating the mantissa roll to get a final range of 1-(almost)10.

• Taking out a calculator in the middle of play to perform exponentiation doesn't really seem quick or easy to me. Mar 3 '20 at 15:02
• There are emulators available on both iOs and Android smart phones. And if you use this mechanic in your game, a basic scientific calculator would just be part of the players' (or GM's) equipment. Everyone at the table would have it out anyway. Mar 3 '20 at 15:07
• @AlienAtSystem There are only 100 decimal parts possible, so you can easily print a reference card with all the 10^x values. The d6 just shifts the decimal point. Mar 3 '20 at 16:15
• @AlienAtSystem true, but it seems like a good excuse for people (who don't use slide rules) to get good at log-antilog in their heads again =) Mar 4 '20 at 0:56
• Or you could just memorize the Taylor-series, and do the math in your head.
– Nyos
Mar 5 '20 at 13:55

Similar to the dice subtraction suggestion, you could use "distance to the center of a normal-ish distribution", where you use the unsigned distance.

As an example "absolute 3d6 - 10": Roll 3d6, add them up, and either subtract 10, or subtract the total from 10, whichever gives a positive number - (anydice link)

And here's the graph for "abs 4d6 - 14".

• The zero value is pretty bogus - it only gets generated about half as ofter as it ought to. But if you're in a situation where zeros shouldn't happen you can throw it out and re-roll. That should happen only every 8-9 times.

• Technically the center of N 6 sided dice is at N * 7/2, so for 3d6 it's at 10 1/2. You can just pick to put it at either 10 or 11 and it won't affect the probabilities much at all.

You could use a d100 and have custom intervals determinign the outcome. E.g: 1-20: encounter difficulty 1 21-35: encounter difficulty 2 and so on With this method you can create any distribution you like.

• Oh, and Welcome to RPG.SE! Take the tour if you haven't already and see the help center or ask us here in the comments (use @ to ping someone) if you need more guidance. Good Luck and Happy Gaming! Mar 11 '20 at 18:25

## Subtract success counts from multiple success count pools

Roll two pools of dice, and count "successes" a la white wolf, 40K, shadowrun, etc, in both of them. Then subtract the smaller form the larger.

This is, in effect, what wargames like 40k are doing when you roll hit pool, wound pool, save pool, etc.

Consider the anydice formula output [absolute [count {5, 6} in 13d6] - [count {5, 6} in 13d6]]

which provides an output that looks like...

The inflection on the curve is really sharp, but it is a curve.

This can have the fun upside of suspense between the two rolls.

It can also be achieved by rolling two visually different pools at once. When doing so you can "eliminate" the pools, matter/antimatter style, which can be physically fun at the table.