It's a mathematician this time


Pathfinder First Edition General Discussion

1 to 50 of 57 << first < prev | 1 | 2 | next > last >>

Okay, I've probably dived in over my head on this one. If a population of 3 million generates their ability scores through simple '3d6 in order,' what percentage has ability scores equivalent to or greater than the average array (13,12,11,10,9,8), and what percentage of those have ability scores equal to or greater than the elite array (15,14,13,12,10,8)?

I managed to calculate the level distribution using a Gaussian function, but statistics is my Achilles' heel in math. Which is probably not so for at least a few people with this hobby. ;)

Also, if anyone could dig up the 3.5 DMG info on generating high-level characters for various classes, that would be a big help. (I'm pretty sure it's OGC, but Jason must have chosen to scrap it for space issues.)


No guarantees on the math. I've never taken any statistics ever, so I do things the long way.

Standard array+ is showing as 1.78% of the total population.
Elite array+ is showing as 0.07% of the total population, or 3.9% of people already with Standard+.

Out of 3mil, 53,400 are Standard+, 2100 of whom are Elite+


Thelemic_Noun wrote:

If a population of 3 million generates their ability scores through simple '3d6 in order,' what percentage has ability scores equivalent to or greater than the average array (13,12,11,10,9,8), and what percentage of those have ability scores equal to or greater than the elite array (15,14,13,12,10,8)?

Percentage with standard array or better is 1.89%. About one in 50. In a population of 3 million that would be 56700 people.

Percentage with elite array or better is 0.0764%. About one in 1300. In a population of 3 million that would be 2292 people. Or 4.04% of the people with standard array or better.

EDIT: Got beat by Symar, but good to know we got the same answer, just different precision.


And for some other random number fun. 1 in 100 Trillion will have an 18 for every state with a 3d6 array.


I would have thought the numbers were higher. My statistics class was many years ago, but I do recall that the formulas were sometimes not as straight forward as they seemed. It might be helpful to also post how you arrived at your numbers.


Thelemic_Noun wrote:
Okay, I've probably dived in over my head on this one. If a population of 3 million generates their ability scores through simple '3d6 in order,' what percentage has ability scores equivalent to or greater than the average array (13,12,11,10,9,8), and what percentage of those have ability scores equal to or greater than the elite array (15,14,13,12,10,8)?

The definition of the problem is a little loose.

1. "A population of 3 million"; are you specifically interested in a ratio of x:3*10^6, or is "3 million" standing in here for the ratio after an infinite number of trials?

2. The operator "Equivalent or greater" has not been defined.
Would you consider (18,18,18,18,18,7) equivalent or greater than (13,12,11,10,9,8)?
Would you consider (8,9,10,11,12,13) equivalent or greater than (13,12,11,10,9,8)?

I have tried to intuit this operator, but the "equivalent or greater" applied to an entire array is at odds with "simple 3d6 in order" which implies stat by stat. So I am confused.

If you tighten up these definitions a bit, I think I could help.


As far as I can tell, it's irrelevant what order the rolls are made in. It's merely a question of whether any stat in the array is good enough to meet a particular criterium. This is the way I'm calculating it.

For the standard array:
You have six rolls so that somewhere in your array is a score of 13 or higher on 3d6. This succeeds 83.5% of the time.
You then have five rolls to get a score of 12 or higher. This succeeds 90.5% of the time.
Four rolls to get 11 or higher, 93.75%
Three rolls for 10 or higher, 94.7%
Two rolls for 9 or higher, 93.3%
One roll for 8 or higher, 83.8%
Multiply all these probabilities together, and 52.4% of the population fail. 47.6% have the standard array or better.

The elite array is a lot less likely, but I still come up 9.9% of the population having that or better.


and that is unfortunately not the way to do it.

But a very fun subject, with a good definition of what exactly you mean of better. then i am certain i can help too


another_mage wrote:
Thelemic_Noun wrote:
Okay, I've probably dived in over my head on this one. If a population of 3 million generates their ability scores through simple '3d6 in order,' what percentage has ability scores equivalent to or greater than the average array (13,12,11,10,9,8), and what percentage of those have ability scores equal to or greater than the elite array (15,14,13,12,10,8)?

The definition of the problem is a little loose.

1. "A population of 3 million"; are you specifically interested in a ratio of x:3*10^6, or is "3 million" standing in here for the ratio after an infinite number of trials?

2. The operator "Equivalent or greater" has not been defined.

If you tighten up these definitions a bit, I think I could help.

Equivalent or greater refers to the sum of the ability modifiers (when discussing the elite array). For standard array, a minimum of two stat modifiers must be +1 or higher. In either case no more than two may be negative. The number 3 million is not arbitrary but refers to the number of ( , , , , , .) arrays. Permutation of array elements does not matter, but all six values do.


Valandil Ancalime wrote:
I would have thought the numbers were higher.

Well here's an easy way to get a rough idea of what you should expect.

If we were talking simply 50-50 chances, you're talking (again roughly) the chance of always getting heads in 6 trials.. or 1 in 2^6 which is 1 in 64.

Now the order does matter in this, as if you had got a 12, 13, 11, 10, 9 ,8 that would not suffice for this despite having the same chance as a 13, 12, 11, 10, 9, 8...

As it is with order mattering all you want to do is find the chance on 3d6 of having a score of X or higher.. where X is 8-13. You then multiply all six of these chances together and that will be your odds of getting the non-elite array in order.

Out of order is a bit more complicated, but not what was being asked for here,

James


Why would the order matter? The Standard array does not specify an order.

My approach was to treat each target number as a separate test which my roll on 3d6 had to exceed within a certain number of attempts. I need to have a 13 in one of the stats, I've got six possible stats, calculate the probability of getting a 13 or higher in 3d6 if you attempt it six times. What's the probability of getting a 12 or higher in the remaining five attempts? What's the probability of an 11 in four attempts, and so on. All those tests have to return positive, so you multiply all the probabilities for each test in succession together to determine the probability of them all succeeding. That's what gave me 47.6%. Given that the mean of a 3d6 die roll is 10.5, and the mean of the range required is 10.5, I'm not surprised to see a figure close to 50%.


Thelemic_Noun wrote:
Equivalent or greater refers to the sum of the ability modifiers (when discussing the elite array). For standard array, a minimum of two stat modifiers must be +1 or higher. In either case no more than two may be negative. The number 3 million is not arbitrary but refers to the number of ( , , , , , .) arrays. Permutation of array elements does not matter, but all six values do.

I see. So you are not interested in the dice probabilities at all, but rather, what percentage (of all possible stat arrays) are "greater than or equal to" each of the two arrays you have named.

I wrote a program to check this and came up with:

Program wrote:

GE(2) -- In:5932610/16777216 (35.361111) Out:10844606/16777216 (64.638889) 2.054000 seconds

GE(5) -- In:3620778/16777216 (21.581519) Out:13156438/16777216 (78.418481) 1.815000 seconds

35.4% of arrays are "greater than or equal to" the average array.

21.6% of arrays are "greater than or equal to" the elite array.

The code of the program I used to calculate this is in the spoiler. The code is hereby placed into the public domain.

Java Code:
package com.paizo.pf.rpg.arraystats;

import java.util.Arrays;
import java.util.List;

public class App implements Runnable
{
public static void main(String[] args)
{
App app = new App();
app.run();
}

@Override
public void run()
{
long startTime = System.currentTimeMillis();
List<Integer> results = checkAllStatsArray(new GreaterThanEqualTo(2));
long endTime = System.currentTimeMillis();

int inCount = results.get(0);
int outCount = results.get(1);
int totalCount = results.get(2);

System.out.format("%nGE(2) -- In:%d/%d (%f) Out:%d/%d (%f) %f seconds",
inCount, totalCount, (double)(((double)inCount/(double)totalCount)*100.0),
outCount, totalCount, (((double)outCount/(double)totalCount)*100.0),
((endTime-startTime)/1000.0));

startTime = System.currentTimeMillis();
results = checkAllStatsArray(new GreaterThanEqualTo(5));
endTime = System.currentTimeMillis();

inCount = results.get(0);
outCount = results.get(1);
totalCount = results.get(2);

System.out.format("%nGE(5) -- In:%d/%d (%f) Out:%d/%d (%f) %f seconds",
inCount, totalCount, (double)(((double)inCount/(double)totalCount)*100.0),
outCount, totalCount, (((double)outCount/(double)totalCount)*100.0),
((endTime-startTime)/1000.0));

}

public List<Integer> checkAllStatsArray(Operation o)
{
int inCount = 0;
int outCount = 0;
int totalCount = 0;

for(int a=3; a<=18; a++)
for(int b=3; b<=18; b++)
for(int c=3; c<=18; c++)
for(int d=3; d<=18; d++)
for(int e=3; e<=18; e++)
for(int f=3; f<=18; f++)
{
if(o.op(Arrays.asList(a,b,c,d,e,f)))
inCount++;
else
outCount++;
totalCount++;
}

return Arrays.asList(inCount, outCount, totalCount);
}
}

interface Operation
{
public boolean op(List<Integer> stats);
}

class GreaterThanEqualTo implements Operation
{
public static final int[] ABILITY_MOD =
{
// 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
-4, -3, -3, -2, -2, -1, -1, 0, 0, 1, 1, 2, 2, 3, 3, 4
};

public GreaterThanEqualTo(int abilityModTotal)
{
this.abilityModTotal = abilityModTotal;
}

@Override
public boolean op(List<Integer> stats)
{
// no more than two may be negative
int negativeCount = 0;
for(Integer i : stats) {
if(i <= 9) negativeCount++;
}
if(negativeCount > 2)
return false;

// sum all of the ability modifiers
int abilityModifiers = 0;
for(Integer i : stats) {
abilityModifiers += ABILITY_MOD[i-3];
}

// check to see if it's greater than or equal to
if(abilityModifiers >= abilityModTotal)
return true;

// it's not greater than or equal to, so we return false
return false;
}

private int abilityModTotal;
}


If we take the standard array as the benchmark, why don't we take the point cost for a comparation "equivalent or greater"? Every array that has a point cost equal to or higher than the given array qualifies.

(I'd like to start calculation right now, but it's rather late and I'm quite tired...)


So, with the information provided by Thelemic, i have made calculated or should i say simulated the probabilities. This could ofcourse have been calculated by using regular probability theory, but i was a bit lazy and its almost midnight here in europe.

So i generated 100,000 people ability scores, by using 3d6 in order. And if we then check how many of these people have stats with atleast two +1 scores or higher, and max two -1 scores or lower. The if evens out to about 51.74 % of the population. This also includes the people with elite array or higher, becouse they will per definition also have higher than the standard array.

If we then check how many people have a +5 or higher total ability acores, with a maximum of two scores at -1 or lower. Then we get 10.94 %.

So this means that out of 3 million people, generating their ability scores with the 3d6 in order rule. then 328,140 people will have elite array or higher, and 1,552,110 people will have standard array or higher.

If anyone has any question regarding the calculations please feel free to ask. I might end up doing the probability and not statistics way another time, but right now i need to go sleep and get ready to party tomorrow


Cpt. Caboodle wrote:

If we take the standard array as the benchmark, why don't we take the point cost for a comparation "equivalent or greater"? Every array that has a point cost equal to or higher than the given array qualifies.

(I'd like to start calculation right now, but it's rather late and I'm quite tired...)

That is an interesting operator too, but the point buy costs are not defined for attributes below 7. Do we simply ignore/discard all arrays with a score less than 7?


hmmm another mage.

I dont like that our programs return such different results. So i have to ask what dice roller or RNG does the program utilise? i wrote my program using probably the most used statistics program called R. And i know they use the best RNG out there, no idea about that java program.

Your program contains a small error. GE2 is calculated as the amount of stats with an ability modifier greater than or equal to 2. While the OP mentioned standard array, as having atleast 2 +1 scores or higher, and max 2 negative.

Still interesting stuff


another_mage wrote:

I wrote a program to check this and came up with:

Program wrote:

GE(2) -- In:5932610/16777216 (35.361111) Out:10844606/16777216 (64.638889) 2.054000 seconds

GE(5) -- In:3620778/16777216 (21.581519) Out:13156438/16777216 (78.418481) 1.815000 seconds

35.4% of arrays are "greater than or equal to" the average array.

21.6% of arrays are "greater than or equal to" the elite array.

After re-reading the definition of "greater than or equal to"; it seems my program included arrays that contained fewer than 2 scores with positive modifiers.

Corrected Program wrote:

GE(2) -- In:5925890/16777216 (35.321057) Out:10851326/16777216 (64.678943) 2.800000 seconds

GE(5) -- In:3620778/16777216 (21.581519) Out:13156438/16777216 (78.418481) 2.683000 seconds

35.3% of arrays are "greater than or equal to" the average array.

21.6% of arrays are "greater than or equal to" the elite array.

Corrected Operator Code:
class GreaterThanEqualTo implements Operation
{
public static final int[] ABILITY_MOD =
{
// 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
-4, -3, -3, -2, -2, -1, -1, 0, 0, 1, 1, 2, 2, 3, 3, 4
};

public GreaterThanEqualTo(int abilityModTotal)
{
this.abilityModTotal = abilityModTotal;
}

@Override
public boolean op(List<Integer> stats)
{
// no more than two may be negative
int negativeCount = 0;
for(Integer i : stats) {
if(i <= 9) negativeCount++;
}
if(negativeCount > 2)
return false;

// at least two must be positive
int positiveCount = 0;
for(Integer i : stats) {
if(i >= 12) positiveCount++;
}
if(positiveCount < 2)
return false;

// sum all of the ability modifiers
int abilityModifiers = 0;
for(Integer i : stats) {
abilityModifiers += ABILITY_MOD[i-3];
}

// check to see if it's greater than or equal to
if(abilityModifiers >= abilityModTotal)
return true;

// it's not greater than or equal to, so we return false
return false;
}

private int abilityModTotal;
}

(Hereby also placed in the public domain.)


is there a requirement that the standard array sums to 2 or more? cause in that case my numbers are, atleast for the standard case is wrong.


nicklas Læssøe wrote:

hmmm another mage.

I dont like that our programs return such different results. So i have to ask what dice roller or RNG does the program utilise? i wrote my program using probably the most used statistics program called R. And i know they use the best RNG out there, no idea about that java program.

I didn't use any random number generator, because it seems the OP was not interested in dice probabilities, but rather just raw percentages of the final arrays. (What percent are better? What percent are worse?)

nicklas Læssøe wrote:
Your program contains a small error. GE2 is calculated as the amount of stats with an ability modifier greater than or equal to 2. While the OP mentioned standard array, as having atleast 2 +1 scores or higher, and max 2 negative.

Ah yes, I had hoped to post a correction before anybody noticed. Very good eye!


nicklas Læssøe wrote:
is there a requirement that the standard array sums to 2 or more? cause in that case my numbers are, atleast for the standard case is wrong.

Oh man... my program is all kinds of wrong. There's no requirement for +2 or better.

New results:

Program Once Bitten, Twice Corrected wrote:

GE(0) -- In:7001642/16777216 (41.733038) Out:9775574/16777216 (58.266962) 2.832000 seconds

GE(5) -- In:3620778/16777216 (21.581519) Out:13156438/16777216 (78.418481) 2.688000 seconds

x >= average: 41.7%

x >= elite: 21.6%


so how do you assign the arrays then? my java programming skills are way to rusty considering im planning to learn myself c++ during the next 2 weeks. but i can barely understand the code as it is. :) the 12:30 time might also have something to do with it


nicklas Læssøe wrote:
so how do you assign the arrays then? my java programming skills are way to rusty considering im planning to learn myself c++ during the next 2 weeks. but i can barely understand the code as it is. :) the 12:30 time might also have something to do with it

This block right here:

checkAllStatsArray wrote:


for(int a=3; a<=18; a++)
for(int b=3; b<=18; b++)
for(int c=3; c<=18; c++)
for(int d=3; d<=18; d++)
for(int e=3; e<=18; e++)
for(int f=3; f<=18; f++)
{
if(o.op(Arrays.asList(a,b,c,d,e,f)))

Basically that stack of for() loops runs from 3 to 18 (inclusive) on six variables, so we generate and try all the arrays.

This call: Arrays.asList(a,b,c,d,e,f)

Turns the individual variables into a List<Integer> object, and we pass that to the operator for in/out checking.


1 person marked this as a favorite.

AHHH

ok that was what i missed. Then i would say my probability estimates are slightly better. Becouse i think the OP wants to know how many people in a 3 million country has standard and elite arrays, if every citizen rolls 3d6 ordered for stats. I might have this wrong though, but thats what i got out of the OP.

But i still like your approach to it.


nicklas Læssøe wrote:

AHHH

ok that was what i missed. Then i would say my probability estimates are slightly better. Becouse i think the OP wants to know how many people in a 3 million country has standard and elite arrays, if every citizen rolls 3d6 ordered for stats. I might have this wrong though, but thats what i got out of the OP.

But i still like your approach to it.

OP wrote:
The number 3 million is not arbitrary but refers to the number of ( , , , , , .) arrays

Eeek. On a re-read, I see what you mean. He may have meant 3 million generated arrays. LOL. Well, I'll wait for him/her to weigh in on the requirements again.

I've heard about R on Slashdot. Is it a cool language to work with?

Liberty's Edge

I kicked together a javascript function that pops out arrays and evaluates them but looking at the individual results it often doesn't make sense to categorize them into the elite/ standard arrays.

What exactly makes something elite? I used:
Two abilities with +2 bonus or better
Two abilities with +1 bonus or better
No more than one ability with -1 penalty
No abilities with a -2 or worse penalty

Standard:
Two abilities with +1 bonus or better
No more than two abilities with -1 penalty
No abilities with a -2 or worse penalty

For example:
Are these arrays "standard" or "Elite"?
17,13,12,12,11,10
16,12,9,8,8,7
16,15,13,11,11,11
14,12,12,10,9,7

More Samples:

10,9,9,8,7,6
11,11,11,10,8,6
17,13,12,11,9,8 standard
15,13,11,10,9,8 standard
13,13,11,10,8,6
14,14,14,12,11,8 elite
18,14,13,10,9,8 standard
14,12,12,9,9,9
14,11,11,9,8,7
17,11,11,10,9,9
14,14,13,10,9,7
14,11,11,9,9,6
12,12,11,10,8,7
12,11,9,7,6,6
12,10,10,9,8,8
12,10,9,8,8,8
16,11,11,10,10,9
15,13,11,10,9,7
17,14,13,10,7,5
13,13,13,10,9,6
8,8,8,8,7,6
15,14,14,10,9,7
15,12,9,9,8,7
15,13,11,10,8,7
17,14,13,10,9,9 standard
13,11,10,9,8,6
17,14,11,11,11,10 standard
14,9,9,8,8,8
15,13,11,9,6,6
16,12,11,10,9,8 standard
13,12,10,9,9,6
15,14,12,11,8,7
11,10,10,10,9,8
14,13,13,9,9,6
14,12,11,11,10,10 standard
13,11,10,10,10,9
14,11,9,7,6,5
14,14,14,8,7,7
15,12,12,11,11,7
12,11,8,8,5,3
14,13,13,10,9,7
17,14,14,14,12,9 elite
15,13,12,11,10,6
15,11,10,10,9,8
15,14,14,13,12,10 elite
12,11,11,10,10,9
16,10,10,9,9,4
11,10,9,8,7,5
14,11,9,9,9,4
16,14,13,11,6,5
18,16,14,13,12,9 elite
13,12,11,9,7,6
16,14,12,12,10,8 elite
15,13,12,9,8,7
14,10,10,10,6,4
18,17,14,12,8,8 standard
17,13,11,10,7,6
13,13,10,8,7,7
14,13,11,9,8,7
14,12,10,10,9,6
17,13,12,11,11,10 standard
12,12,12,10,9,8 standard
12,11,10,9,9,8
15,12,12,12,9,9 standard
15,13,11,10,8,6
17,13,12,12,10,10 standard
13,12,12,11,7,6
11,9,9,7,7,4
17,14,13,10,9,6
13,13,12,10,9,8 standard
15,15,11,9,9,7
14,10,10,8,8,8
16,13,11,10,10,6
15,12,11,10,7,6
10,9,9,8,8,5
13,9,8,8,7,6
16,15,9,8,7,7
14,13,13,10,9,9 standard
16,16,14,11,7,4
11,11,10,10,8,8
15,13,12,12,10,9 standard
12,11,10,8,8,8
15,14,13,12,10,8 elite
13,12,12,10,9,8 standard
12,12,11,9,8,7
17,13,13,11,11,7
12,12,11,9,6,5
17,15,14,12,10,8 elite
15,11,9,8,7,5
13,12,11,9,8,5
15,14,13,10,9,5
17,12,10,9,9,8
16,11,11,8,5,4
15,12,12,9,8,8
13,13,12,12,11,11 standard
14,14,13,13,11,10 elite
11,10,10,10,9,5
10,10,9,9,8,5
11,11,11,8,7,7
15,15,14,12,12,10 elite

Is a seven or less an instant fail? Are scores with a three minus 1 or worse penalties instant fails?

Does a single higher score bump it from 'standard' to elite even though the other scores don't meet the elite criteria?

Here is my script to crank out individual results, you can pop it in the
Try It Thingy by overwriting the existing script.

Spoiler:

<html>
<body>

<script type="text/javascript">

function roll() {
return Math.floor(Math.random()*6)+Math.floor(Math.random()*6)+Math.floor(Math.ran dom()*6)+3
}

var n = [roll(), roll(),roll(),roll(),roll(),roll()];
document.write(n.sort(function(a,b){return b-a}));
if (n[1]>11 && n[3]>9 && n[5]>7) {
if (n[1]>13 && n[3]>11 && n[4]>9 && n[5]>7) {
document.write(" elite");
} else {
document.write(" standard");
}
}

</script>

</body>
</html>


@ another mage

I dont know if its a cool language, but its simple becouse of the ability to use a lot of functions programmed by other people and such. Since its a "pure" statistics program, it can handle any distribution and generation you want to throw at it, and most of them are already build in.

I think its becouse of that, that its used by statisticians and actuary's (they are not real statisticians) to calculate and simulate different probabilities.


another_mage wrote:
Cpt. Caboodle wrote:

If we take the standard array as the benchmark, why don't we take the point cost for a comparation "equivalent or greater"? Every array that has a point cost equal to or higher than the given array qualifies.

(I'd like to start calculation right now, but it's rather late and I'm quite tired...)

That is an interesting operator too, but the point buy costs are not defined for attributes below 7. Do we simply ignore/discard all arrays with a score less than 7?

Yes, you're right.

I expanded the table as a house rule, in case one of my players would like to get some extra points. (So far, nobody used it yet...)

3 -14
4 -11
5 -8
6 -6

Shadow Lodge

Cpt. Caboodle wrote:
another_mage wrote:
Cpt. Caboodle wrote:

If we take the standard array as the benchmark, why don't we take the point cost for a comparation "equivalent or greater"? Every array that has a point cost equal to or higher than the given array qualifies.

(I'd like to start calculation right now, but it's rather late and I'm quite tired...)

That is an interesting operator too, but the point buy costs are not defined for attributes below 7. Do we simply ignore/discard all arrays with a score less than 7?

Yes, you're right.

I expanded the table as a house rule, in case one of my players would like to get some extra points. (So far, nobody used it yet...)

3 -14
4 -11
5 -8
6 -6

I'll rework this into my script... but I need to step out. I think I might just auto-DQ anything with a -3 penalty and leave the -2s in there.


another_mage wrote:
I've heard about R on Slashdot. Is it a cool language to work with?

I'm not nicklas, but I am an R user. (Or a former one at least, don't get to use it so much in my current job...) I actually studied under the guys who wrote the software in the first place!

I'm not a terribly enthusiastic or skilled programmer, but it's very useful for any kind of stats work. Very flexible if you need to make any modifications or create your own functions and that sort of thing. The free status of it means that there are all sorts of cool functions to find at places like r-project. Generally speaking, unless you're trying something very strange, you'll be able to find something similar to at least use for a base or get ideas. And there are a number of messagelists where you can get help from top statisticians.

It's also seeing more and more use in more commercial areas. Google make quite a lot of use of it for example and get involved in user conferences and the like. And I know that some big energy companies use it for some modelling.


Bluenose wrote:

Why would the order matter? The Standard array does not specify an order.

My approach was to treat each target number as a separate test which my roll on 3d6 had to exceed within a certain number of attempts. I need to have a 13 in one of the stats, I've got six possible stats, calculate the probability of getting a 13 or higher in 3d6 if you attempt it six times. What's the probability of getting a 12 or higher in the remaining five attempts? What's the probability of an 11 in four attempts, and so on. All those tests have to return positive, so you multiply all the probabilities for each test in succession together to determine the probability of them all succeeding. That's what gave me 47.6%. Given that the mean of a 3d6 die roll is 10.5, and the mean of the range required is 10.5, I'm not surprised to see a figure close to 50%.

This is incorrect as the chance of having at least 1 number higher than 13 out of 6 is not independent of having the 2nd highest of those 6 numbers be a 12 or higher.

Or am I not following you correctly here?

Consider the chance of NOT getting a 7 or lower, now raise this to the 6th power. This would give you the chance of having 8s and above, right?

Now your odds of getting a standard array or better would be lower than your odds of getting just all 8s or better, right?

I would be VERY surprised to hear that the odds of a standard array or better was anywhere near 50%.

I'm guessing that rolling a 7 or lower is like 1 in 6. So you're looking at 5/6 of the time to get an 8 or more on a given 3d6 roll.. so likely a 1 in 3 chance to do so 6 times in a row... so any number that you're getting that's above this isn't likely to be true.

-James


Using Matlab.

I chose these values for point buys:
3 = -16
4 = -12
5 = -9
6= - 6
All else according to the rules.

I did 30 million sets of 6 3d6 rolls and tallied up the points.

14.3% had scores equal or better to the Standard Buy
2.7% had scores equal or better to the Epic Buy

If you take out the ones with any ability less than 7, there are 12.8% with equal or better to the Standard Buy, and 2.6% with Epic Buy or better.

Shadow Lodge

keeper0 wrote:

Using Matlab.

I chose these values for point buys:
3 = -16
4 = -12
5 = -9
6= - 6
All else according to the rules.

I did 30 million sets of 6 3d6 rolls and tallied up the points.

14.3% had scores equal or better to the Standard Buy
2.7% had scores equal or better to the Epic Buy

If you take out the ones with any ability less than 7, there are 12.8% with equal or better to the Standard Buy, and 2.6% with Epic Buy or better.

This sounds way too low.

Using the criteria I mentioned above I come up with:
~4.6% elite
~25% standard

Spoiler:

Elite:
Two abilities with +2 bonus or better
Two abilities with +1 bonus or better
No more than one ability with -1 penalty
No abilities with a -2 or worse penalty

Standard:
Two abilities with +1 bonus or better
No more than two abilities with -1 penalty
No abilities with a -2 or worse penalty

And that criteria is a lot more restrictive than point buy.

Shadow Lodge

0gre wrote:

14.3% had scores equal or better to the Standard Buy

2.7% had scores equal or better to the Epic Buy

ACK!

I hadn't realize you'd drifted so far away from the original question (Average Array and Elite array).


0gre wrote:
0gre wrote:

14.3% had scores equal or better to the Standard Buy

2.7% had scores equal or better to the Epic Buy

ACK!

I hadn't realize you'd drifted so far away from the original question (Average Array and Elite array).

Neither had I. Damn, it helps to read the question before starting the answer.


nicklas Læssøe wrote:

AHHH

ok that was what i missed. Then i would say my probability estimates are slightly better. Becouse i think the OP wants to know how many people in a 3 million country has standard and elite arrays, if every citizen rolls 3d6 ordered for stats. I might have this wrong though, but thats what i got out of the OP.

But i still like your approach to it.

Yep. Man this is complicated... Here's a lesson kids, if you spend two semesters doing nothing but chemistry, the math skills go right out the window.

Shadow Lodge

1 person marked this as a favorite.

New Script, added point buy statistics in there.

Here is the breakdown I get:

Out of 1000000 Rolls
4.57% elite
25.31% standard

0-5 Points 15.10%
5-10 Points 17.48%
10-15 Points 12.67%
15-20 Points 7.64%
20-25 Points 3.87%
25-30 Points 1.70%
30-35 Points 0.64%
35-40 Points 0.23%
40-45 Points 0.07%
45-50 Points 0.02%

Elite Array is 15 point buy so roughly 11% of results are "as good as" elite array... however that's ignoring the fact that some stat blocks are completely ridiculous (3,3,5,18,18,12).

Assumptions:
Normal point buy with the lower values assigned like so:
3 = -16
4 = -12
5 = -9
6 = -6

The top assignment of "elite" and "average" is based on my previous assumptions.

Copy/ Paste the spoilered script On this page to try it out and adjust it yourself.

Script:

<html>
<body>

<script type="text/javascript">

function roll() {
return Math.floor(Math.random()*6)+Math.floor(Math.random()*6)+Math.floor(Math.ran dom()*6)+3
}

function points(r) {
var score=0
for (var i=0;i<6;i++) {
var p=r[i]-8
p+=r[i]>15?r[i]-15:0
p+=r[i]>13?r[i]-13:0
p-=r[i]<8?8-r[i]:0
p-=r[i]<6?2*(6-r[i]):0
p-=r[i]==3?10:0
score += p
}
return score
}

var tries = 100000
var elite = 0
var standard = 0
var ps = new Array()
for (var t=0;t<10;t++) {ps[t]=0}

for (var x=0;x<tries;x++) {
var n = [roll(), roll(),roll(),roll(),roll(),roll()];
n.sort(function(a,b){return b-a})
var p=points(n)
// document.write("<br>"+n+"("+p+")");
if (p>0) {
ps[Math.floor(p/5)]++
}
if (n[1]>11 && n[3]>9 && n[5]>7) {
standard++;
if (n[1]>13 && n[3]>11 && n[4]>9 && n[5]>7) {
// document.write(" elite");
elite++;
} //else {
// document.write(" average");
//}
}

}

document.write("<br>"+(elite/tries*100).toFixed(2)+"% elite<br>" );
document.write((standard/tries*100).toFixed(2)+"% standard<br>" );

for (var t=0;t<10;t++) {
document.write("<br>"+t*5+"-"+(t+1)*5+" Points "+(ps[t] /tries*100).toFixed(2)+"%" );
}

</script>

</body>
</html>


Bump to prevent premature burial.


nicklas Læssøe wrote:

So, with the information provided by Thelemic, i have made calculated or should i say simulated the probabilities. This could ofcourse have been calculated by using regular probability theory, but i was a bit lazy and its almost midnight here in europe.

So i generated 100,000 people ability scores, by using 3d6 in order. And if we then check how many of these people have stats with atleast two +1 scores or higher, and max two -1 scores or lower. The if evens out to about 51.74 % of the population. This also includes the people with elite array or higher, becouse they will per definition also have higher than the standard array.

If we then check how many people have a +5 or higher total ability acores, with a maximum of two scores at -1 or lower. Then we get 10.94 %.

So this means that out of 3 million people, generating their ability scores with the 3d6 in order rule. then 328,140 people will have elite array or higher, and 1,552,110 people will have standard array or higher.

If anyone has any question regarding the calculations please feel free to ask. I might end up doing the probability and not statistics way another time, but right now i need to go sleep and get ready to party tomorrow

quoting myself :) this is supposed to be the right percentages. Using the requirements that the OP posted.

Shadow Lodge

nicklas Læssøe wrote:
If we then check how many people have a +5 or higher total ability acores, with a maximum of two scores at -1 or lower. Then we get 10.94 %.

I guess it all depends on your assumption of what constitutes an elite array now. Your numbers are right, my numbers are right, they both use different assumptions.


i completely agree, but i atleast answered the precise question asked by the OP. While you probably answered what he meant :)

i agree that having 7,7,14,18,12,10 is probably not better than the elite array, or maybe they are. But atleast we gave the OP alot of usefull and correct answers. Also i dislike using the inbuild java RNG, but that is probably some kind of work damage.

Nicklas Læssøe

Shadow Lodge

All true.

As for RNGs, almost all of them are fine for this sort of thing. If it was needed for cryptography or something where predictability was a potential problem then maybe it would be an issue.


Also could have used a binomial coefficient to avoid a brute force count, the tree it makes is basically a bell curve.


yah that might be possible, but as i stated earlyer this was done becouse of pure lazyness on my end.

Yes i do realise that the RNG dosnt really matter for this type of problem, but the reason i dislike the one in java, is probably becouse of years of preaching from various professors.


Is there any real difference between Java’s and other languages? I just assumed it is clock cycle multiplied by a seed. A professor told me that a hardware based rather than software RNG gives better “random” results.

Little discrete math helps get rid of the “random” problem though :)

Although in Java you will need to use big integer because the factorials get huge pretty fast.

Shadow Lodge

The big problem with quasi-random number generators is they are predictable. Generally when people want random numbers they want a sequence that cannot be predicted. For example for cryptography a predictable random number sequence is worthless, for video games predictable sequences result in predictable games (though this isn't as much an issue anymore).

I don't know if Java's is any better or worse than most. There are some hardware based RNGs now and some programming languages are able to tap into those.

For this sort of analysis we don't need unpredictable values, we just need a representative spread over the range of values so the big 'problem' with RNGs is a total non-issue for this.


I dunno: (3,3,5,18,18,12) could be a fascinating character. Lots of hooks there.


actually that statblock is not better than the standard array, as it contains more than 2 negative modifiers.

Yah i agree with the predictability, is not an issue here. Although R uses an RNG that hasnt been proven to be predictable, and is as such very nice for a lot of other problems where it does matter. To say that it isnt predictable in some way, would probably be to far a stretch, but atleast no one has found a statistical analyses to show it. Ie its the best we can do for quasi real RNG so far.


For a sufficiently large number sequence though is not there always going to be some sort of pattern? This sounds like an interesting topic to read up on.

Also ‘R’ is Ruby on Rails?

Shadow Lodge

ntin wrote:

For a sufficiently large number sequence though is not there always going to be some sort of pattern? This sounds like an interesting topic to read up on.

Also ‘R’ is Ruby on Rails?

True random number generators rely on inherently unpredictable events rather than number sequences. One example I saw is a high voltage is applied over an open circuit and they measure the number of (very rare) stray electrons that manage to bridge the gap. I've also seen people measure entropy from the number of photos hitting a camera sealed in a lightless box.


0gre wrote:
ntin wrote:

For a sufficiently large number sequence though is not there always going to be some sort of pattern? This sounds like an interesting topic to read up on.

Also ‘R’ is Ruby on Rails?

True random number generators rely on inherently unpredictable events rather than number sequences. One example I saw is a high voltage is applied over an open circuit and they measure the number of (very rare) stray electrons that manage to bridge the gap. I've also seen people measure entropy from the number of photos hitting a camera sealed in a lightless box.

"Now that's some quantum sh** right there!"

Best of the four IMHO.

1 to 50 of 57 << first < prev | 1 | 2 | next > last >>
Community / Forums / Pathfinder / Pathfinder First Edition / General Discussion / It's a mathematician this time All Messageboards

Want to post a reply? Sign in.