View Full Version : Attribute score generation comparison

2016-11-09, 09:39 AM
Currently I have the following method in place:

Roll 4d6b3 twice, take the better result. Minimum 10, if lower.
Repeat five times.

Now I've seen another method, namely:

Every score has a minimum of 10.
You get a pool of 20 points.
Distribute these 20 points 1:1 between the abilities.
Max 18 for each score before racial modifiers.

So both methods create scores in the same range, but while I do like the better predictability of the point-buy variant, I'm not sure how these methods actually differ. Or how to compare them in the first place. How does the probability curve actually look like? What is the equivalent number of points is for the rolling variant? Is there anything else I need to look out for? And last, but not least, how do I figure out the answers to my questions?

Jay R
2016-11-09, 01:13 PM
The first method has a mean (average) of about 13.9, and a standard deviation of about 2.089. The distribution looks like this:

10 7%
11 7%
12 12%
13 15%
14 17%
15 17%
16 13%
17 8%
18 3%

The second one has a mean of 13⅓, and every character will have exactly 13⅓, since every character has exactly 80 points. The standard deviation has no meaning, since it's chosen, not random.

That looks like the first one is worth more, but since about half the stats will be odd, and even stats are more efficient, I'm not convinced it will be in practice.

The biggest difference in PC design is that in the rolled stats, slightly less than 1/5 of all players will have an 18. Half the characters will have a 17 or 18, and 4/5 will have a 16 or better. In the chosen stats, everyone will have at least one 18.

How to figure it out? The best of two 4d6b3s isn't an easy calculation. I spent some time with Excel, and couldn't teach it to you quickly.

2016-11-10, 05:02 AM
If I parse this correctly, you're saying that the 80 point buy method is basically equivalent to my rolls as the standard Pathfinder point buy of 20 is equivalent to the 4d6b3 method?

2016-11-10, 09:15 AM
A way to test if you know some programming.

I made a function in the programming language R that simulates 4d6b3. R is a free language you can download and install (just Google "R" and look for the programming language, and you can probably find it.)

roll4d6b3 = function(n=6)
{ #simulates the practice of "roll 4d6 best 3" for rolling for ability scores during character creation
#n is how many times it rolls 4d6 and calculates the sum of the highest 3
#defaults to 6 for the six ability scores: Str, Dex, Con, Wis, Int, Cha
dice=sample(6, n*4, replace=TRUE) #creates vector of size n*4, each simulating a random roll of a d6
returnThis=rep(NA, n)

for (i in 1:n)
{ #look at each set of 4 dice (ex. 1-4) to determine which 3 are the best three, then sum them into outputThis[i]

If you did something like:

for (i in 1:1000) testvector[i]=mean(roll4d6b3())

that should yield the long-term average of using 4d6b3. Or at least, I think it should--not 100% sure i should take the mean of the results of roll4d6b3() or not.
Whatever method Jay R used is probably better, since you are getting the actual mathematical mean (the 'true mean', or population mean) instead of an empirically-derived, and thus somewhat off the mark, mean (an 'empirical mean', or sample mean.)

Note: to clarify, if you install R and copy-and-paste the stuff in the CODE blocks, I think that should output the empirical mean. If you want the standard deviation, type "sd(testvector)". I haven't tested the code in the second block, but it looks right to me.

I'm not really sure how to do the point-buy method, but... well, I guess you could program it if you got all possible permutations of spending those 20 points and averaged those.

Jay R
2016-11-10, 10:30 AM
Note that what the OP wants is more complicated than 4d6b3. He wants to do that twice, and pick the higher of the two. Youíd need to roll eight dice, calculate each of two 4d6b3s, and pick the highest.

By the way, I donít know R, but if it has a minimum function, you can skip the sorting step. 4b6d3 is just sum(tempD) - min(tempD).

I'm not really sure how to do the point-buy method, but... well, I guess you could program it if you got all possible permutations of spending those 20 points and averaged those.

The point-buy method is not random, and you can't simulate it randomly. For instance, no 3.5e player would ever build the character 13, 13, 13, 13, 14, 14, or the character 11, 11, 13, 13, 15. 17. But those are both results that you'd get randomly.

Since the total is 80, we know that the mean score is 13.333. But the standard deviation can't be calculated without knowing what choices the players are likely to make.

For instance, I suspect that any character I built with that system would be either 18, 18, 14, 10, 10, 10 or 18, 16, 16, 10, 10, 10. That optimizes two or three stats, which I would then focus the character on. It also maximizes standard deviation. But another player might decide to balance them a little more. Calculating an overall standard deviation means learning the distribution of player decisions. And it has no purpose, since it doesn't apply to any gamer.

Finally, your empirical process should work just fine for most purposes. With 1,000 iterations, it will be within 1.96 sigma/ sqrt(1000) 95% of the time. Thatís +/- 0.13. For gaming purposes, thatís a perfectly good answer.