For character creation my group sometimes uses a weird method to generate stats. We roll 6 stat arrays using 4d6d1 (rolling 4d6 and dropping the lowest), and arrange them on top of one another to make a 6x6 matrix. We can then choose any row, column, or diagonal as our stat array.

An example of a matrix generated this way:

Example Matrix

Giving us the following options for our stat array (Row 3 seems to be the best in this case):

Array Options

LR and RL are the diagonals from the Top Left to the Bottom Right, and Top Right to the Bottom Left respectively.

What is the average point buy of using this method? And how is it calculated in this case?

  • 2
    \$\begingroup\$ Does everyone roll their own matrix and choose from there, or do people choose from the same matrix? \$\endgroup\$
    – Tommi
    Commented Apr 25, 2019 at 5:17
  • \$\begingroup\$ Related: rpg.stackexchange.com/questions/119598/… \$\endgroup\$ Commented Apr 25, 2019 at 9:30
  • \$\begingroup\$ @Thanuir Sometimes everyone rolls their own matrix, other times everyone contributes one stat array to a matrix for the whole group. \$\endgroup\$
    – willuwontu
    Commented Apr 25, 2019 at 11:53

2 Answers 2


The average point buy value is about 37.7; the median is 37

Actually calculating the expected value of the best point buy of any row, column, or diagonal of a 6x6 matrix is tricky, because the values in the rows, columns, and diagonals are not independent of each other. So instead, let's just generate 500,000 random 6x6 arrays of 4d6 drop lowest and find the best point buy value from each one, using the R code linked here: https://gist.github.com/DarwinAwardWinner/8b1511b175e77fffb77cbccf314e85e4

Running this, we get:

> print(summary(best_pb))
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
   7.00   32.00   37.00   37.72   43.00   83.00 

The median value is 37, and the mean is about 37.7. Here's what the histogram of possible values looks like:

Histogram of best point buy values

This histogram is nice and smooth with the peak around the mean and median, indicating that 500,000 samples is probably enough to get stable estimates for the mean and median.

(Note: For all stat values below 7, I just used -4 points as the point buy value, rather than attempting to extrapolate the point buy value table further downward.)

  • \$\begingroup\$ Note that I'm not super familiar with the point buy formulas in Pathfinder, so if I got that wrong, someone please correct me and I'll re-run the code. \$\endgroup\$ Commented Apr 25, 2019 at 6:56
  • \$\begingroup\$ Nice work, how does the extrapolated point buy of -16, -12, -9, -6 for stats of 3 to 6 (since 3 is minimum with 4d6d1) affect the results? I imagine it will lower the PB value a bit. \$\endgroup\$
    – willuwontu
    Commented Apr 25, 2019 at 11:51
  • \$\begingroup\$ @williamporter It should actually make'almost no difference. The likelihood of the best possible array containing a 6 or lower is very small. \$\endgroup\$ Commented Apr 25, 2019 at 13:11

It's hard (impossible?) to calculate this analytically since the maximum row and column values are not independent, so I wrote a small Java program which simulated tens of millions of rolls, and it ends up with an average of about 37.7 points:

N=1, average: 41.000
N=3, average: 34.667
N=10, average: 36.800
N=30, average: 36.367
N=100, average: 36.670
N=300, average: 37.197
N=1000, average: 37.340
N=3000, average: 37.572
N=10000, average: 37.650
N=30000, average: 37.703
N=100000, average: 37.706
N=300000, average: 37.705
N=1000000, average: 37.709
N=3000000, average: 37.710
N=10000000, average: 37.708
N=30000000, average: 37.707

  • \$\begingroup\$ Ok, the fact that 2 independent programs got the same value gives me hope that we both got it right. \$\endgroup\$ Commented Apr 25, 2019 at 6:57
  • \$\begingroup\$ Yeah, that makes it very likely. I see we've used the same point buy formula which I've sourced from d20pfsrd.com/basics-ability-scores/ability-scores so that's probably the correct one. \$\endgroup\$
    – Glorfindel
    Commented Apr 25, 2019 at 7:13
  • 3
    \$\begingroup\$ I played with your code a bit, and it seems that if we value stats below 7 as -999 points (which basically means the code will never pick them) instead of -4 points, the average point total drops to from 37.7 to 37.5 points. (Basically, that happens because very occasionally an otherwise really awesome row/column/diagonal like 18,18,18,6,18,18 just happens to be ruined by one low number.) While not totally insignificant, a drop of only 0.2 points is pretty minor, and indicates that these results aren't affected much by variations in how sub-7 ability scores are valued. \$\endgroup\$ Commented Apr 25, 2019 at 11:00
  • \$\begingroup\$ Nice work, how does the extrapolated point buy of -16, -12, -9, -6 for stats of 3 to 6 (since 3 is minimum with 4d6d1) affect the results? I imagine it will lower the PB value a bit. \$\endgroup\$
    – willuwontu
    Commented Apr 25, 2019 at 11:52
  • 1
    \$\begingroup\$ @williamporter thanks; that will not affect the value by much, see IlmariKaronen's comment for another experiment. Your setup would amount to an average of 37.6. \$\endgroup\$
    – Glorfindel
    Commented Apr 25, 2019 at 11:59

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .