Menu
News
All News
Dungeons & Dragons
Level Up: Advanced 5th Edition
Pathfinder
Starfinder
Warhammer
2d20 System
Year Zero Engine
Industry News
Reviews
Dragon Reflections
White Dwarf Reflections
Columns
Weekly Digests
Weekly News Digest
Freebies, Sales & Bundles
RPG Print News
RPG Crowdfunding News
Game Content
ENterplanetary DimENsions
Mythological Figures
Opinion
Worlds of Design
Peregrine's Nest
RPG Evolution
Other Columns
From the Freelancing Frontline
Monster ENcyclopedia
WotC/TSR Alumni Look Back
4 Hours w/RSD (Ryan Dancey)
The Road to 3E (Jonathan Tweet)
Greenwood's Realms (Ed Greenwood)
Drawmij's TSR (Jim Ward)
Community
Forums & Topics
Forum List
Latest Posts
Forum list
*Dungeons & Dragons
Level Up: Advanced 5th Edition
D&D Older Editions, OSR, & D&D Variants
*TTRPGs General
*Pathfinder & Starfinder
EN Publishing
*Geek Talk & Media
Search forums
Chat/Discord
Resources
Wiki
Pages
Latest activity
Media
New media
New comments
Search media
Downloads
Latest reviews
Search resources
EN Publishing
Store
EN5ider
Adventures in ZEITGEIST
Awfully Cheerful Engine
What's OLD is NEW
Judge Dredd & The Worlds Of 2000AD
War of the Burning Sky
Level Up: Advanced 5E
Events & Releases
Upcoming Events
Private Events
Featured Events
Socials!
EN Publishing
Twitter
BlueSky
Facebook
Instagram
EN World
BlueSky
YouTube
Facebook
Twitter
Twitch
Podcast
Features
Top 5 RPGs Compiled Charts 2004-Present
Adventure Game Industry Market Research Summary (RPGs) V1.0
Ryan Dancey: Acquiring TSR
Q&A With Gary Gygax
D&D Rules FAQs
TSR, WotC, & Paizo: A Comparative History
D&D Pronunciation Guide
Million Dollar TTRPG Kickstarters
Tabletop RPG Podcast Hall of Fame
Eric Noah's Unofficial D&D 3rd Edition News
D&D in the Mainstream
D&D & RPG History
About Morrus
Log in
Register
What's new
Search
Search
Search titles only
By:
Forums & Topics
Forum List
Latest Posts
Forum list
*Dungeons & Dragons
Level Up: Advanced 5th Edition
D&D Older Editions, OSR, & D&D Variants
*TTRPGs General
*Pathfinder & Starfinder
EN Publishing
*Geek Talk & Media
Search forums
Chat/Discord
Menu
Log in
Register
Install the app
Install
Upgrade your account to a Community Supporter account and remove most of the site ads.
Community
General Tabletop Discussion
*Dungeons & Dragons
Point Buy vs Rolling for Stats
JavaScript is disabled. For a better experience, please enable JavaScript in your browser before proceeding.
You are using an out of date browser. It may not display this or other websites correctly.
You should upgrade or use an
alternative browser
.
Reply to thread
Message
<blockquote data-quote="Harzel" data-source="post: 7258506" data-attributes="member: 6857506"><p>When @<em><strong><u><a href="http://www.enworld.org/forum/member.php?u=6801845" target="_blank">Oofta</a></u></strong></em> did this work, I began thinking about whether you could analyze the situation fully, enumerating all possibilities, instead of sampling. Since the number of sequences of 24 d6 rolls is 6^24, which is just a bit less than 3x10^18, the answer would seem to be ‘no’, at least for brute force. However, I realized there was a way to cut the problem down quite a bit. Details are below for those interested, but the result was that I was able to calculate the frequencies/probabilities of stat arrays rolled as 6 x 4d6k3 with various properties, particularly how they relate to point buy. This is the first batch of results; I have a few more things planned. Suggestions are welcome.</p><p> </p><p>The top level bucketing that I did just summarizes how the stat arrays generated by 6 x 4d6k3 will generally fall with respect to whether you can directly compare them using the standard point-buy scheme at all. It’s not ideal, but the best that I could think of.</p><p></p><p>[TABLE="class: grid, width: 600"]</p><p>[TR]</p><p>[TD]<strong>Arrays in which the values are</strong>[/TD]</p><p>[TD]<strong>Frequency</strong>[/TD]</p><p>[TD][/TD]</p><p>[/TR]</p><p>[TR]</p><p>[TD]<strong>Some < 8; All < = 15</strong>[/TD]</p><p>[TD]14.5%[/TD]</p><p>[TD]Out of range low[/TD]</p><p>[/TR]</p><p>[TR]</p><p>[TD]<strong>All >= 8; All <= 15</strong>[/TD]</p><p>[TD]28.8%[/TD]</p><p>[TD]In range[/TD]</p><p>[/TR]</p><p>[TR]</p><p>[TD]<strong>All >= 8; Some > 15</strong>[/TD]</p><p>[TD]41.5%[/TD]</p><p>[TD]Out of range high[/TD]</p><p>[/TR]</p><p>[TR]</p><p>[TD]<strong>Some < 8; Some > 15</strong>[/TD]</p><p>[TD]15.3%[/TD]</p><p>[TD]Out of range low and high[/TD]</p><p>[/TR]</p><p>[/TABLE]</p><p> </p><p>For those that were in the 8/15 range, I further broke them down by point-buy value. The whole list is in the attached spreadsheet, but here are a few points that I thought were interesting.</p><ul> <li data-xf-list-type="ul">The most frequent point-buy value is 26 (1.76%); above and below 26, the frequencies gradually decrease. 25 points is at 1.75% and 27 points is at 1.73%.</li> <li data-xf-list-type="ul">The total frequency for 0-27 points is 16.8%; 27-54 points is 12.0%.</li> <li data-xf-list-type="ul">The mean point-buy value is 26.25.</li> </ul><p>Next, I plan to a) compute distributions for ranked values (highest value in array, 2[SUP]nd[/SUP] highest, etc.); and b) invent some extended point-buy scheme that can assign a point-buy value to all possible arrays (to induce comparability).</p><p></p><p>Oh, I just happened to look back at the first page of the thread and see that @<em><strong><u><a href="http://www.enworld.org/forum/member.php?u=6801845" target="_blank">Oofta</a></u></strong></em> did some analysis for which he invented some point-buy scheme for all of 3-18. I had forgotten that.</p><p></p><p>In the meantime, so as to ensure that the enlightened back and forth in this thread continues, I will note that at 1.73%, the arrays corresponding to exactly 27 points come up rather rarely. This underscores that (take your pick)</p><ul> <li data-xf-list-type="ul">Point buy greatly restricts the wide variety of concepts that rolling allows.</li> <li data-xf-list-type="ul">Rolling produces a lot of results that are quite uneven.</li> </ul><p>Something for everyone. <img src="https://cdn.jsdelivr.net/joypixels/assets/8.0/png/unicode/64/1f642.png" class="smilie smilie--emoji" loading="lazy" width="64" height="64" alt=":)" title="Smile :)" data-smilie="1"data-shortname=":)" /></p><p> </p><p><em>Computational notes</em></p><p>[sblock]The basic observation is not all that deep. Since we are interested in properties of the stat arrays, not the underlying rolls, it would suffice to just analyze each of the possible stat arrays if we knew each one’s frequency/probability. But the frequencies are actually pretty straightforward to compute. Several others in the thread have already displayed calculations of the frequency distribution of values generated by a single 4d6k3 roll. Since (we assume) the 6 rolls for a stat array are independent, the frequency of a particular array is just the product of the frequencies of its individual elements. Given the frequency of each stat array, the frequency of some property (such as having a particular point-buy value), is just the sum of the frequencies of the arrays having that property.</p><p></p><p>Alternatively, since all 4d6 rolls (as sequences) are equally likely, you can think of the problem in terms of counting and make similar observations. We know the number of 4d6k3 rolls that map to each value, and for each particular stat array, the number of 6 x 4d6k3 rolls that produce it is just the product of the number of individual 4d6k3 rolls that produce each of its constituent values. And then the number of 6 x 4d6k3 rolls that have a particular property is the sum of the numbers of rolls that produce the individual arrays having that property.</p><p> </p><p>And in fact, counting was how I conceived of the problem initially. However, computationally, that counting can involve some fairly large numbers. In fact, in an interesting (or not) coincidence, that number of distinct 6 x 4d6 rolls mentioned above, 24^6, turns out to be just a little bit shy of the largest number that can be represented in a 64-bit integer. So, since I didn’t want to have worry about massaging my arithmetic to ensure that values stayed in bounds, and since the results really need to be converted to frequencies in the end for interpretability anyway, I coded it in terms of frequency calculations using floating-point, because, after all, what’s a little round-off error between friends. (Actually, I did check by adding back together frequencies that should sum to 1, and still got more than 10 nines, so I think things are pretty much ok.)</p><p></p><p>Anyway, even using that basic observation, things still could have gone amiss, as it was not immediately clear that enumerating all possible stat arrays was going to be feasible. However, 3 to 18, inclusive, is 16 values and 16^6 is ‘only’ 16,777,216 – not that many more than the 10,000,000 @<em><strong><u><a href="http://www.enworld.org/forum/member.php?u=6801845" target="_blank">Oofta</a></u></strong></em> used for sampling. And in fact, just enumerating them turned out to be nearly instantaneous. Putting in the 6 floating-point multiplications for each array (to compute its frequency) did bog things down a bit – about a 5 second pause. The bits of code for analysis are just comparisons and additions and adding them in didn’t seem to hurt too much. So in the end, this seems to walk right up to but not overstep feasibility, at least for my desktop.[/sblock]</p></blockquote><p></p>
[QUOTE="Harzel, post: 7258506, member: 6857506"] When @[I][B][U][URL="http://www.enworld.org/forum/member.php?u=6801845"]Oofta[/URL][/U][/B][/I] did this work, I began thinking about whether you could analyze the situation fully, enumerating all possibilities, instead of sampling. Since the number of sequences of 24 d6 rolls is 6^24, which is just a bit less than 3x10^18, the answer would seem to be ‘no’, at least for brute force. However, I realized there was a way to cut the problem down quite a bit. Details are below for those interested, but the result was that I was able to calculate the frequencies/probabilities of stat arrays rolled as 6 x 4d6k3 with various properties, particularly how they relate to point buy. This is the first batch of results; I have a few more things planned. Suggestions are welcome. The top level bucketing that I did just summarizes how the stat arrays generated by 6 x 4d6k3 will generally fall with respect to whether you can directly compare them using the standard point-buy scheme at all. It’s not ideal, but the best that I could think of. [TABLE="class: grid, width: 600"] [TR] [TD][B]Arrays in which the values are[/B][/TD] [TD][B]Frequency[/B][/TD] [TD][/TD] [/TR] [TR] [TD][B]Some < 8; All < = 15[/B][/TD] [TD]14.5%[/TD] [TD]Out of range low[/TD] [/TR] [TR] [TD][B]All >= 8; All <= 15[/B][/TD] [TD]28.8%[/TD] [TD]In range[/TD] [/TR] [TR] [TD][B]All >= 8; Some > 15[/B][/TD] [TD]41.5%[/TD] [TD]Out of range high[/TD] [/TR] [TR] [TD][B]Some < 8; Some > 15[/B][/TD] [TD]15.3%[/TD] [TD]Out of range low and high[/TD] [/TR] [/TABLE] For those that were in the 8/15 range, I further broke them down by point-buy value. The whole list is in the attached spreadsheet, but here are a few points that I thought were interesting. [LIST] [*]The most frequent point-buy value is 26 (1.76%); above and below 26, the frequencies gradually decrease. 25 points is at 1.75% and 27 points is at 1.73%. [*]The total frequency for 0-27 points is 16.8%; 27-54 points is 12.0%. [*]The mean point-buy value is 26.25. [/LIST] Next, I plan to a) compute distributions for ranked values (highest value in array, 2[SUP]nd[/SUP] highest, etc.); and b) invent some extended point-buy scheme that can assign a point-buy value to all possible arrays (to induce comparability). Oh, I just happened to look back at the first page of the thread and see that @[I][B][U][URL="http://www.enworld.org/forum/member.php?u=6801845"]Oofta[/URL][/U][/B][/I] did some analysis for which he invented some point-buy scheme for all of 3-18. I had forgotten that. In the meantime, so as to ensure that the enlightened back and forth in this thread continues, I will note that at 1.73%, the arrays corresponding to exactly 27 points come up rather rarely. This underscores that (take your pick) [LIST] [*]Point buy greatly restricts the wide variety of concepts that rolling allows. [*]Rolling produces a lot of results that are quite uneven. [/LIST] Something for everyone. :) [I]Computational notes[/I] [sblock]The basic observation is not all that deep. Since we are interested in properties of the stat arrays, not the underlying rolls, it would suffice to just analyze each of the possible stat arrays if we knew each one’s frequency/probability. But the frequencies are actually pretty straightforward to compute. Several others in the thread have already displayed calculations of the frequency distribution of values generated by a single 4d6k3 roll. Since (we assume) the 6 rolls for a stat array are independent, the frequency of a particular array is just the product of the frequencies of its individual elements. Given the frequency of each stat array, the frequency of some property (such as having a particular point-buy value), is just the sum of the frequencies of the arrays having that property. Alternatively, since all 4d6 rolls (as sequences) are equally likely, you can think of the problem in terms of counting and make similar observations. We know the number of 4d6k3 rolls that map to each value, and for each particular stat array, the number of 6 x 4d6k3 rolls that produce it is just the product of the number of individual 4d6k3 rolls that produce each of its constituent values. And then the number of 6 x 4d6k3 rolls that have a particular property is the sum of the numbers of rolls that produce the individual arrays having that property. And in fact, counting was how I conceived of the problem initially. However, computationally, that counting can involve some fairly large numbers. In fact, in an interesting (or not) coincidence, that number of distinct 6 x 4d6 rolls mentioned above, 24^6, turns out to be just a little bit shy of the largest number that can be represented in a 64-bit integer. So, since I didn’t want to have worry about massaging my arithmetic to ensure that values stayed in bounds, and since the results really need to be converted to frequencies in the end for interpretability anyway, I coded it in terms of frequency calculations using floating-point, because, after all, what’s a little round-off error between friends. (Actually, I did check by adding back together frequencies that should sum to 1, and still got more than 10 nines, so I think things are pretty much ok.) Anyway, even using that basic observation, things still could have gone amiss, as it was not immediately clear that enumerating all possible stat arrays was going to be feasible. However, 3 to 18, inclusive, is 16 values and 16^6 is ‘only’ 16,777,216 – not that many more than the 10,000,000 @[I][B][U][URL="http://www.enworld.org/forum/member.php?u=6801845"]Oofta[/URL][/U][/B][/I] used for sampling. And in fact, just enumerating them turned out to be nearly instantaneous. Putting in the 6 floating-point multiplications for each array (to compute its frequency) did bog things down a bit – about a 5 second pause. The bits of code for analysis are just comparisons and additions and adding them in didn’t seem to hurt too much. So in the end, this seems to walk right up to but not overstep feasibility, at least for my desktop.[/sblock] [/QUOTE]
Insert quotes…
Verification
Post reply
Community
General Tabletop Discussion
*Dungeons & Dragons
Point Buy vs Rolling for Stats
Top