The average array on 4d6 drop lowest as I understand it is 16, 14, 13, 12, 10, 9. I did not Monte Carlo that.
I checked the frequency of the above average array for BS, which is 16, 15, 13, 12, 10, 9 or better. About a third of characters.
I'll take a look at the "average" array and revert.
Also looking for 12+ Con, I found (over >100,000 arrays) the fewest per hundred = 26 and the most per hundred = 31. Does that agree with your estimate for same?
That is an array of 16, 15, 12... or better. That allows the BS to have +8 AC by level 4, and +1 HP per level and HD.
No, it does not agree. I get a mean of 34.2% with a 95% confidence margin of +/- 8.3%. So, slightly more than you're getting. How are you sorting your numbers?
I generate 1000 sets of 6 4d6 rolls and then compute the k3 scores for each group of 4 in the 1k sets. I then sort largest to smallest. I have a set of reference cells for the array I'm looking for and then count the number of the largest scores equal to or greater than the first reference stat that also have the second highest stat equal to or greater than the second reference, etc.
Generating 4d6 rolls: randbetween(1,6)
Finding 4d6k3: sum(range)-min(range)
Sorting for largest to smallest: large(range,place) ex: large(range,1) for highest, large(range,4) for 4th highest
Counting number of sets that qualify: countifs(range of highest, ">="&reference, range of second highest, ">+"&reference, ...)
This returns the number of the 1000 rolls that meet or exceed the required array. If I'm looking for a partial array, I set the unwanted numbers to 0, which will count all sets with the partial numbers.
I run this test 25 times, generating 25k runs, and average the values using Average(range). Standard deviation is found with stdev.s(range). Confidence margins are found using Confidence(margin, SD reference, number of trials). Since confidence is altered by taking averages, I run it per 1000 and take the highest value given across 25 trials. Doesn't underestimate and means i don't have to have 25k fields in my spreadsheet.