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
*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
*TTRPGs General
*Pathfinder & Starfinder
EN Publishing
*Geek Talk & Media
Search forums
Chat/Discord
Menu
Log in
Register
Install the app
Install
Community
General Tabletop Discussion
*Pathfinder & Starfinder
Probability in Char. Gen.
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="RedShirtNo5" data-source="post: 2174051" data-attributes="member: 173"><p>This was done in Visual Basic 6.0 using a single form with a button and a textbox. It took about 5-10 minutes to run. </p><p> </p><p>The calculation of 31.12104 assumed point buy for stats below 8 scale linearly. I can calculate for other assumptions if folks are interested.</p><p> </p><p>[code]</p><p>Private Sub Command1_Click()</p><p> </p><p>Dim V As Single</p><p>Dim P As Single</p><p>Dim A As Single</p><p>Dim Value As Single</p><p>Dim Probability As Single</p><p>Dim Strength As Integer</p><p>Dim Dexterity As Integer</p><p>Dim Intelligence As Integer</p><p>Dim Wisdom As Integer</p><p>Dim Charisma As Integer</p><p>Dim SampleText As String</p><p> </p><p>V = 0</p><p>P = 0</p><p> </p><p>' We will cycle through each possible stat array that could be created</p><p>For Strength = 3 To 18</p><p>For Dexterity = 3 To 18</p><p>For Constitution = 3 To 18</p><p>For Intelligence = 3 To 18</p><p>For Wisdom = 3 To 18</p><p>For Charisma = 3 To 18</p><p> </p><p>' If the stat array is a "worthless character", then skip it</p><p>' Deal with no stats 14+ first</p><p>If Strength > 13 Or Dexterity > 13 Or Consitution > 13 _</p><p>Or Intelligence > 13 Or Wisdom > 13 Or Chrarisma > 13 Then</p><p> </p><p>' Deal with total mods of 0 or below next</p><p> If Int((Strength - 10) / 2) + Int((Dexterity - 10) / 2)_</p><p> + Int((Constitution - 10) / 2) + Int((Intelligence - 10) / 2)_</p><p> + Int((Wisdom - 10) / 2) + Int((Charisma - 10) / 2) > 0 Then</p><p> </p><p>' If the stat array is not a worthless character, calculate the </p><p>! point buy value (PBV) and the probability of that character occurring</p><p> Value = PBV(Strength) + PBV(Dexterity) + PBV(Constitution)_</p><p> + PBV(Intelligence) + PBV(Wisdom) + PBV(Charisma)</p><p> </p><p> Probability = prob(Strength) * prob(Dexterity) * prob(Constitution)_</p><p> * prob(Intelligence) * prob(Wisdom) * prob(Charisma)</p><p> </p><p>' Add the weighted point buy value to a running total</p><p> V = V + Value * Probability</p><p> </p><p>' Track the total probability (P) of getting a "non-worthless" character</p><p>' for normalization below</p><p> P = P + Probability</p><p> </p><p> End If</p><p>End If</p><p> </p><p>Next</p><p>Next</p><p>Next</p><p>Next</p><p>Next</p><p>Next</p><p> </p><p>' We know the probability (1-P) of rolling a worthless character,</p><p>' and we calculated the average point buy value (V) that results</p><p>' from a single roll of 4d6dl. Since you keep rolling until you get a</p><p>' non-worthless character, the percentage chance (1-P) of a </p><p>' worthless ' character gets distributed across the possible </p><p>' non-worthless characters. Thus, we simply need to normalize </p><p>' the result.</p><p>A = V / P</p><p> </p><p>' And display it</p><p>Text1.Text = "Final Result:" + Str(A)</p><p> </p><p>End Sub</p><p>Function PBV(x)</p><p>' This assumes that point buy for stats below 8 scales linearly</p><p>If x < 15 Then PBV = x - 8</p><p>If x = 15 Then PBV = 8</p><p>If x = 16 Then PBV = 10</p><p>If x = 17 Then PBV = 13</p><p>If x = 18 Then PBV = 16</p><p>End Function</p><p> </p><p>Function prob(x)</p><p>'These percentages taken from dcollins </p><p>' ([url="http://superdan.net.home.comcast.net/dndmisc/4d6curve.html"]http://superdan.net.home.comcast.net/dndmisc/4d6curve.html[/url])</p><p>If x = 3 Then prob = 0.0008</p><p>If x = 4 Then prob = 0.0031</p><p>If x = 5 Then prob = 0.0077</p><p>If x = 6 Then prob = 0.0162</p><p>If x = 7 Then prob = 0.0293</p><p>If x = 8 Then prob = 0.0478</p><p>If x = 9 Then prob = 0.0702</p><p>If x = 10 Then prob = 0.0941</p><p>If x = 11 Then prob = 0.1142</p><p>If x = 12 Then prob = 0.1289</p><p>If x = 13 Then prob = 0.1327</p><p>If x = 14 Then prob = 0.1235</p><p>If x = 15 Then prob = 0.1011</p><p>If x = 16 Then prob = 0.0725</p><p>If x = 17 Then prob = 0.0417</p><p>If x = 18 Then prob = 0.0162</p><p>End Function</p><p> </p><p>[/code]</p></blockquote><p></p>
[QUOTE="RedShirtNo5, post: 2174051, member: 173"] This was done in Visual Basic 6.0 using a single form with a button and a textbox. It took about 5-10 minutes to run. The calculation of 31.12104 assumed point buy for stats below 8 scale linearly. I can calculate for other assumptions if folks are interested. [code] Private Sub Command1_Click() Dim V As Single Dim P As Single Dim A As Single Dim Value As Single Dim Probability As Single Dim Strength As Integer Dim Dexterity As Integer Dim Intelligence As Integer Dim Wisdom As Integer Dim Charisma As Integer Dim SampleText As String V = 0 P = 0 ' We will cycle through each possible stat array that could be created For Strength = 3 To 18 For Dexterity = 3 To 18 For Constitution = 3 To 18 For Intelligence = 3 To 18 For Wisdom = 3 To 18 For Charisma = 3 To 18 ' If the stat array is a "worthless character", then skip it ' Deal with no stats 14+ first If Strength > 13 Or Dexterity > 13 Or Consitution > 13 _ Or Intelligence > 13 Or Wisdom > 13 Or Chrarisma > 13 Then ' Deal with total mods of 0 or below next If Int((Strength - 10) / 2) + Int((Dexterity - 10) / 2)_ + Int((Constitution - 10) / 2) + Int((Intelligence - 10) / 2)_ + Int((Wisdom - 10) / 2) + Int((Charisma - 10) / 2) > 0 Then ' If the stat array is not a worthless character, calculate the ! point buy value (PBV) and the probability of that character occurring Value = PBV(Strength) + PBV(Dexterity) + PBV(Constitution)_ + PBV(Intelligence) + PBV(Wisdom) + PBV(Charisma) Probability = prob(Strength) * prob(Dexterity) * prob(Constitution)_ * prob(Intelligence) * prob(Wisdom) * prob(Charisma) ' Add the weighted point buy value to a running total V = V + Value * Probability ' Track the total probability (P) of getting a "non-worthless" character ' for normalization below P = P + Probability End If End If Next Next Next Next Next Next ' We know the probability (1-P) of rolling a worthless character, ' and we calculated the average point buy value (V) that results ' from a single roll of 4d6dl. Since you keep rolling until you get a ' non-worthless character, the percentage chance (1-P) of a ' worthless ' character gets distributed across the possible ' non-worthless characters. Thus, we simply need to normalize ' the result. A = V / P ' And display it Text1.Text = "Final Result:" + Str(A) End Sub Function PBV(x) ' This assumes that point buy for stats below 8 scales linearly If x < 15 Then PBV = x - 8 If x = 15 Then PBV = 8 If x = 16 Then PBV = 10 If x = 17 Then PBV = 13 If x = 18 Then PBV = 16 End Function Function prob(x) 'These percentages taken from dcollins ' ([url="http://superdan.net.home.comcast.net/dndmisc/4d6curve.html"]http://superdan.net.home.comcast.net/dndmisc/4d6curve.html[/url]) If x = 3 Then prob = 0.0008 If x = 4 Then prob = 0.0031 If x = 5 Then prob = 0.0077 If x = 6 Then prob = 0.0162 If x = 7 Then prob = 0.0293 If x = 8 Then prob = 0.0478 If x = 9 Then prob = 0.0702 If x = 10 Then prob = 0.0941 If x = 11 Then prob = 0.1142 If x = 12 Then prob = 0.1289 If x = 13 Then prob = 0.1327 If x = 14 Then prob = 0.1235 If x = 15 Then prob = 0.1011 If x = 16 Then prob = 0.0725 If x = 17 Then prob = 0.0417 If x = 18 Then prob = 0.0162 End Function [/code] [/QUOTE]
Insert quotes…
Verification
Post reply
Community
General Tabletop Discussion
*Pathfinder & Starfinder
Probability in Char. Gen.
Top