Relative frequency of different classes

Before a ask my question I need to tell a little story:

As part of my project to produce an R script for ACKS Judges, I've been playing around with the system I use for generating NPCs (either for NPC parties or for henchmen generation).

Up until this point I've been using an expanded version of the table on page 248 - it incorporates the Players' Companion classes, and has varied weighting for settlemets of different races (Dwarven Henchmen are far more commonly available in Dwarf settlements than in human ones). My program rolls up a class and then attributes for each henchmen. Any rolls that don't fit for that class (due to Prime Requisite or racial restrictions) are re-rolled until they comply with the class's minima.

This works well enough, but it has some results I'm not entirely happy with:

  1. It raises the average values for attributes quite a lot.
  2. It doesn't fit the attributes to the class very well. While there should be a chance of a STR 9, INT 18 character becoming a fighter they should have more chance of being a mage than a STR 18, INT 9 character would.

With this in mind, I've created a program that generates attributes first and then randomly selects a class based on a weighting that changes depending on the attributes rolled:

  • All classes are divided into Fighters, Clerics, Mages, Thieves and Exotics (the classes that aren't human, elf or dwarf are all exotic). Fighters have a weight of 4, Clerics and Theives have a weighting of 2 and Mages and Exotics have a weight of 1.
  • Any class that is a different race to the settlement's race gets their weight divided by 4. In human settlements, fighters are about 4 times as common as Dwarven Vaultguards. The reverse is true in Dwarven settlements.
  • Any class gets its weight set to 0 if the NPC doesn't meet all the racial and Prime Requisite minima for the class.
  • Each class gets a weighting multiplier based on how high the NPCs attributes are in the class's Prime Requisites. This multiplier is (1+Bonus)2, so a character with STR 18 is 16 times as likely to go into a STR Prime Requisite class than they would be if they were STR 9. For classes with mutiple Prime Requisites, the lowest of these multiplers is applied.
  • Some characters can't be sorted into any class since you need to have at least a 9 in one attribute other than CON to get into any class. These characters get assigned "Normal Human" as their class.

The reason this is in Ask the Autarchs and not House Rules is that I used the above rules to generate 1,000,000 NPCs to see what distribtuion of classes I would end up with. My table of results is below, along with the average attribute score each class got:

Anti-Paladin 48,720 4.9% 11.8 10.2 10.0 9.9 10.3 12.0
Assassin 25,115 2.5% 11.8 10.2 9.9 12.0 10.2 9.8
Barbarian 54,651 5.5% 11.8 10.2 9.9 9.8 12.2 9.8
Bard 30,290 3.0% 9.3 10.1 9.6 12.0 10.3 12.0
Bladedancer 29,663 3.0% 9.4 10.2 11.9 12.0 10.3 9.7
Cleric 72,698 7.3% 9.5 10.2 12.8 9.8 10.3 9.7
Dwarven Craftpriest 12,654 1.3% 9.5 10.2 12.8 9.8 11.8 9.7
Dwarven Delver 14,001 1.4% 9.2 10.1 9.6 13.0 11.8 9.8
Dwarven Fury 20,323 2.0% 12.8 10.3 10.0 9.9 11.7 9.8
Dwarven Machinist 6,009 0.6% 9.3 12.1 9.7 12.0 11.8 9.8
Dwarven Vaultguard 20,119 2.0% 12.8 10.3 9.9 9.9 11.7 9.8
Elven Courtier 8,623 0.9% 9.3 12.0 9.6 9.8 10.3 12.0
Elven Enchanter 4,210 0.4% 9.2 12.1 9.7 9.7 10.3 12.0
Elven Nightblade 8,505 0.9% 9.3 12.0 9.7 12.0 10.3 9.7
Elven Ranger 8,844 0.9% 11.8 11.6 9.9 12.0 10.2 9.8
Elven Spellsword 3,541 0.4% 11.9 12.1 9.9 9.8 10.1 9.8
Explorer 49,923 5.0% 11.8 10.2 9.9 12.0 10.2 9.8
Fighter 121,382 12.1% 12.8 10.2 10.0 9.8 10.1 9.7
Gnomish Trickster 3,153 0.3% 9.3 11.6 9.6 9.6 12.3 12.1
Mage 45,944 4.6% 9.3 13.1 9.7 9.8 10.3 9.7
Mystic 20,993 2.1% 9.5 10.2 11.5 11.6 11.8 11.6
Nobirian Wonderworker 64 0.01% 12.6 14.0 13.2 12.5 13.0 12.9
Paladin 48,662 4.9% 11.8 10.2 9.9 9.9 10.2 12.0
Priestess 28,383 2.8% 9.5 10.2 11.9 9.8 10.3 12.0
Shaman 73,034 7.3% 9.5 10.2 12.8 9.8 10.3 9.7
Thief 80,460 8.0% 9.2 10.0 9.6 13.0 10.3 9.7
Thrassian Gladiator 3,321 0.3% 12.7 10.2 10.0 11.6 11.7 9.8
Venturer 80,078 8.0% 9.2 10.0 9.6 9.7 10.3 13.0
Warlock 45,570 4.6% 9.3 13.1 9.7 9.8 10.3 9.7
Witch 28,453 2.8% 9.5 10.2 11.9 9.9 10.3 12.0
Zaharan Ruinguard 1,468 0.1% 12.0 12.1 11.5 9.9 10.2 11.5
Normal Human 1,146 0.1% 6.8 6.7 6.8 6.8 10.5 6.8

My question for the Autarchs is, does this seem reasonable to you? Do the non-humans seem too common or too rare? Does the balance of the 4 core classes to the other classes seem right? I know I can run my campaign how I want, but I'd like to understand the official expectation of class frequency so that if I deviate from it, I do so by considered choice.

(Insert standard IANAA disclaimer here)


Doing the math, Elves are 3.5% of adventurers, Dwarves are 7.3% of adventurers, and Gnomes and Thrassians each 0.3%, so 11.4% of adventurers are species other than Human (counting Zaharan and Nobiran as types of human). For NPC distribution, I think this probably works. I think PCs will tend a bit more towards the rare classes, just because of how the human brain interacts with perceived scarcity, but this would work great for a henchman generator or random party generator. I'd also round all the stats up, and add 1d6-3 to each (the standard deviation on 3d6 is basically 3, so adding 1d6-3 puts them within 1 standard deviation of average).

It's interesting that the Trickster ended up with the second-highest average CON (behind the Wonderworker), and that the Venturer has the highest average CHA. I would not have expected those results.

I wasn't actually planning to change the attribute generation or anything - I'll just use this program as my henchman generator. I just thought it was interesting to see where all the stats ended up.

The Trickster gets such high CON because its one of 3 classes with CON as a Prime Requisite, so the high-CON characters get concentrated into a couple of classes, at least if their other attributes fit with each class. Equally, the Venturer is the only class with CHA as a Prime Requisite by itself so all the rolls with high CHA but nothing else high tend to become Venturers.

I also must disclaim that IANAA.

I think your work is very interesting and must have taken quite a bit of work. I like that you included the scenario where a NPC might have chosen to follow a class that doesn't optimize his attributes. I'm sure there would be an occasional Mage that has something like a STR of 17 and an INT of 13.

Some things you might consider are:

Running a variant of your program by racial group. Obviously, with some races having only 1 class that means that they are represented by that one class 100% of the time. For other racial groups a spread of how that race's classes break down by population would become more apparent. It would also be useful for campaign settings that have different racial compositions. If the setting has no elves, or if half the setting's population are elves then breaking the elf classes into their own grouping becomes more useful than including them into one overall simulation.

Also, you might want to consider setting aside some classes as being "base" classes that together make up 80% (or another set %) of the population. For example, the base human classes of Fighter, Cleric, Thief and Mage together might make up 80% of the classed population, but they still follow the 4:2:2:1 ratio. Then apply your program to the remaining classes to see who makes up the remaining 20%. Another example where this might be useful to apply is with the Elf classes. Your simulation came up with about double the Courtiers as Spellswords, but it seems to me that Spellswords should be far more common than Courtiers. Spellswords are part of the typical hierarchy within elves as detailed within their Monster entry. You might consider making Spellswords and Nightblades "base" classes for elves (but each campaign is its own), and run your program for the remaining elf classes. 

Anyways that's my .02¢.

the trouble with elves is that none of the classes listed are meant to be anywhere near as common as the fighter is among humans.  Spellswords aren't the default, nor are courtiers.  Presumably the true default would be something akin to the Dwarven Vaultguard: a Figting 2, HD 2, Elf 0 class.


Also, you might want to consider setting aside some classes as being "base" classes that together make up 80% (or another set %) of the population. For example, the base human classes of Fighter, Cleric, Thief and Mage together might make up 80% of the classed population, but they still follow the 4:2:2:1 ratio.


My thoughts are similar to Wmarshal's; this is a really cool generator idea.  The percentage of exotic classes does seem high (such as the amount of paladins or anti-paladins compared to vanilla fighters).  For instance, in most campaigns you could expect ordinary fighters to dominate the percentage of fighting men as many NPCs would pick up fighting experience in the army instead of through exotic classes like the paladin.  I like the idea of making the core 4 classes account for 80% and allocating the demi humans and exotic across a smaller set.

Regarding generating actual stats (not the averages) do you use a standard deviation from the average to create a specific NPC?  (Once you're done I'm already thinking how to borrow the idea!)

Thanks everyone for your comments.


One thing I plan to do is do another million runs for Elf and Dwarf Settlements. I want to see if the proportion of humans is sensible when you move outside a human settlement. As for setting with a non-standard proportion of demi-humans - when I publish my code I'll include an option for swapping out the weights table for a custom one, so users can use their own weights if they want to.

The relative frequency of the Elves will be in part driven by the base weights I assigned them: The Ranger is counted as a Fighter, the Courtier and Nightblade are Thieves and the Enchanter and Spellswords are Mages (it seemed really strage to make spellswords more common than a pure magic user because they're also really good at fighting). The ranger is penalised further by needing to have at least three attributes at 9+, while the other Elves only need 9+ in two.


At the moment all the fighter-type classes have the same base weight. I can see the wisdom of lowering that weight for classes like Paladins and Anti-Paladins since their profession is a sort of religious calling. I could also see the wisdom of raising the base weight for the basic classes.

I don't really see this approach being very useful for generating NPCs when you already have a class in mind. For those NPCs I take more of a bespoke approach. I created this more for generating henchmen for hire and NPC parties, since it can be time consuming to roll up a large number of NPCs at once.


I've started using the Elven Ranger as the standard elf, to the point where I have replaced the spellswords with rangers in wandering monster encounters.

I have to agree, Elven Ranger is the closest thing to a sensible fighter analogue, and the only class I'd feel comfortable having in proportions similar to that of fighters in human settlements.

I ran the numbers again for elven and dwarven settlements. The difference here is that the weightings in the second bullet point change. Rather than giving you the full tables, here are the results by race each settlements (the "human" column is just the rsults above, aggegated up to the race level):

  Settlement Race
NPC Race Human Dwarf Elf
Human 88.5% 48.8% 55.1%
Dwarf 7.3% 42.6% 16.8%
Elf 3.4% 7.2% 26.4%
Other 0.8% 1.4% 1.7%

So we end up with about 50% of NPCs being Human in elven and dwarven settlements. How does that sit with you? The Elves in an Elf settlement seems off to me, I think I may have to increase the influence of settlement race on the fornula.

That feels off to me.

Given the usual tropes, I'd expect less humans in Elven/Dwarven settlements than I'd expect either Elves or Dwarves in human settlements - or alternatively I'd expect around the same variation in the Human settlements for the other - somewhere around 90% native.

Or, there's perhaps further adjustments based on settlement location - an Elven settlement in the hinterlands of the forest extremely far from any human settlement may never see a normal man, but one that's butted right up against some random human dukedom will see more due to trade.

There's some other discussion of "normal demihumans" here:

with additional support for the HD2/Fight2/Elf0 "elven warrior" class being the "default leveled Elf", which may be able to get away with just INT and STR 9 as prerequisites, but that kinda goes outside the published boundaries.


I could see a lower Demi-Human percentage even in a demi-human settlement because adventurers tend to travel a lot, but I do think thos enumbers are too low. I'll adjust some of the parameters and give it another go.

That looks off to me, too. I also think this whole pursuit starts to get very heavily into questions of setting and world-building. While it would be interesting to tease out what reasonable ACKS' numbers would be based on default assumptions, they may not hold true for any other campaign world. In my own campaign, for example, there are two major groups of nearby elves, one of them defaulting to Spellswords as their base Class, the other to Rangers, due to cultural differences. Within those Domains I simply assume those Classes occur at the same rate as Fighters in human lands.

Question - are those humans showing up more than expected because we've got stat blocks "falling through" due to not meeting the base requirement of being an Elf?

If so, what are the percentages coming out for "Almost Elf"? Let's say you bring it back up to breaking out individual classes, and the listing ends up like

Almost Spellsword: 15%
Spellsword: 10%
Almost Ranger: 7%
Ranger: 5%

and so on...assuming a copy of the Elven Ranger class that drops the INT requirement and keeps the STR/DEX, so those stat block fall into that bucket, so as to catch stat blocks that can't be an Elf Class in the first place? Combined with the weighting you're doing in the different settlements for the non-native classes, that might expose Elves who aren't meeting the INT requirements to become *any* class, and that'd be the "Normal Elf" entry?


Let's compare the relative incidence of the Explorer and the Eleven Ranger. These classes have the same Prime Requisites and the same base weight (since I have coded them both as fighters). To remove the effect of settlement race, here are the figures for explorers adn Elven Rangers in Dwarf settlements:

  • Explorer: 26,835 per million
  • Elven Ranger: 18,182 per million

Elven Rangers are 67% as common as Explorers, which is a little lower than the theoretical value of 74% that would come from the chance of rolling a 9+ on 3d6. I attribute the difference to the fact that high INT rolls will tend to be drawn away to classes with INT as a Prime Requisite.

I think one of the main drivers of Elven rarity is the low base rates for their classes - they have one class with 4, two with 2 and two with 1. Compare that to Dwarves with two 4s and three 2s, and Dwarves have a 40% higher base weight than Elves do. On top of that four of the Dwarf classes have only one Prime Requisite, but all five Elven classes have two. Extra Prime Requisites make it much harder to attracts characters into the class since you need to have 13+ in all Prime Requisites before you start getting any increase in your multiplier for that class.

Something that would standardize the distribution a little bit would be to take alignment as a prior, rather than as a result of class choice.

If your stock is evenly distributed between law, neutrality, and chaos, the frequency of anti-paladins is cut threefold.

And, really, assuming 1/3 of folks are Chaotic is a bit much.

That's a good idea.