Quick script to see, when rolling a dice set complement of d6, d8, d10, d12, d20 , which are the most frequent numbers to appear.
Use this to determine how to subdivide your Foe Pool
See also fate chances
Then, aggregating those percentage point chances, what likelihood a given range would be hit.
This is for the construction of a list of foes for a game: given a list from 1-20 , roll a complement of die; choose the foes from the list at the corresponding numbers.
The intent is to have different foes occupy different levels - for example the list can be expressed as ranges:
- 1-4 : imp
- 5-9 : goblin
- 10-17 : troll
- 18-20 : dragon
With this distribution, we can see that the distribution of chances (percentages) lies such:
$ python3 dn-rolls.py -R 4,9,17,20
{
"1..4": "42.0",
"5..9": "40.0",
"10..17": "15.0",
"18..20": "3.0"
}
So if each round we introduce enemies with these dice, we have a 3% chance to encounter a dragon, and an 81% chance of getting either an imp or a goblin, and 15% for a troll, which works the rarities for each type decently.
Note the free definition of the range list, independent of the dice capacities themselves.
See the chances with just certain dice - for example d6 and d8:
$ python3 stats-tools/dN-rolls/dn-rolls.py -D 6,8
{
"1..6": "87.5",
"7..8": "12.5",
"9..10": "0.00",
"11..12": "0.00",
"13..20": "0.00"
}
Combine arguments to find your preferred distribution of ranges and run shorter or longer simulations.
$ python3 stats-tools/dN-rolls/dn-rolls.py -R 3,6,14,17,20 -D 6,8
{
"1..3": "43.8",
"4..6": "43.7",
"7..14": "12.5",
"15..17": "0.0",
"18..20": "0.0"
}
$ python3 stats-tools/dN-rolls/dn-rolls.py -R 3,6,14,17,20 -D 6,8,10,12
{
"1..3": "35.6",
"4..6": "35.6",
"7..14": "28.8",
"15..17": "0.0",
"18..20": "0.0"
}
$ python3 stats-tools/dN-rolls/dn-rolls.py -R 3,6,14,17,20 -D 6,8,10,12,20
{
"1..3": "31.5",
"4..6": "31.5",
"7..14": "31.0",
"15..17": "3.0",
"18..20": "3.0"
}