New OOTS products from CafePress
New OOTS t-shirts, ornaments, mugs, bags, and more
Page 13 of 50 FirstFirst ... 3456789101112131415161718192021222338 ... LastLast
Results 361 to 390 of 1486
  1. - Top - End - #361
    Barbarian in the Playground
    Join Date
    Sep 2014

    Default Re: Class and Level Geekery XIV - We are the Geek Pantheon

    Quote Originally Posted by Quartz View Post
    But your question does actually deserve a serious answer. When we are dealing with a roll of one or two dice, maybe three, then taking the minimum or maximum as appropriate is entirely sensible. But more dice than that makes it sensible for the purposes of this thread to assume the average. It's nearly 30 years since I studied statistics seriously, but I still remember the binomial distribution.
    Averages, standard deviations, etc are irrelevant: God does not roll dice. Nor does he work based on the most statistically probable rolls.

  2. - Top - End - #362
    Ogre in the Playground
     
    Flumph

    Join Date
    Apr 2007
    Location
    Beverly, MA, USA
    Gender
    Male

    Default Re: Class and Level Geekery XIV - We are the Geek Pantheon

    Quote Originally Posted by Reboot View Post
    Averages, standard deviations, etc are irrelevant: God does not roll dice. Nor does he work based on the most statistically probable rolls.
    Yes, but for the purposes of this thread, we ignore dramatic effect and treat OOTS as if it operated as a normal game, except for the caveats that we know exist or have strong evidence that they exist (e.g. flight encumbrance rules, teleportation not requiring touch, Medium-sized goblins, etc.).

    This thread would quickly become impossible to maintain if we acted as though the Rule of Plot, rather than RAW, predominated. The Giant specifically pointed that out in this thread a couple years ago, if you recall.

    I should also note that, in the comic you linked, an in-universe explanation for why Qarr was able to summon a pit fiend (or w/e that thing was) was provided in one of the following strips, rather than one relying on the Rule of Drama.
    Last edited by Emanick; 2016-09-18 at 03:17 PM.
    Number of Character Appearances VII - To Absent Friends

    Currently playing a level 20 aasimar necromancer named Zebulun Salathiel and a level 9 goliath diviner named Lo-Kag.

    Quote Originally Posted by Fyraltari View Post
    Quote Originally Posted by Peelee View Post
    Player: Bob twists the vault door super hard, that should open it.
    DM: Why would you think that?
    Player: Well, Bob thinks it. And since Bob has high Int and Wis, and a lot of points in Dungeoneering, he would probably know a thing or two about how to open vault doors.
    Ah yes, the Dungeon-Kruger effect.

  3. - Top - End - #363
    Banned
     
    zimmerwald1915's Avatar

    Join Date
    Mar 2010
    Location
    Lake Wobegon
    Gender
    Male

    Default Re: Class and Level Geekery XIV - We are the Geek Pantheon

    Quote Originally Posted by Emanick View Post
    This thread would quickly become impossible to maintain if we acted as though the Rule of Plot, rather than RAW, predominated. The Giant specifically pointed that out in this thread a couple years ago, if you recall.
    Good thing nobody's suggesting that. What is being pointed out is that we have no reason to privilege the statistically likely over the statistically-unlikely but rules-permitted outcomes. Specifically, we don't need to invoke special circumstances to explain why a fireball dealt enough damage to a bunch of frost giants that Haley could kill them with sneak attacks.

  4. - Top - End - #364
    Barbarian in the Playground
    Join Date
    Sep 2014

    Default Re: Class and Level Geekery XIV - We are the Geek Pantheon

    Quote Originally Posted by zimmerwald1915 View Post
    Good thing nobody's suggesting that. What is being pointed out is that we have no reason to privilege the statistically likely over the statistically-unlikely but rules-permitted outcomes. Specifically, we don't need to invoke special circumstances to explain why a fireball dealt enough damage to a bunch of frost giants that Haley could kill them with sneak attacks.
    What he said. ↑
    Last edited by Reboot; 2016-09-18 at 05:15 PM.

  5. - Top - End - #365
    Ogre in the Playground
     
    Flumph

    Join Date
    Apr 2007
    Location
    Beverly, MA, USA
    Gender
    Male

    Default Re: Class and Level Geekery XIV - We are the Geek Pantheon

    Quote Originally Posted by zimmerwald1915 View Post
    Good thing nobody's suggesting that. What is being pointed out is that we have no reason to privilege the statistically likely over the statistically-unlikely but rules-permitted outcomes. Specifically, we don't need to invoke special circumstances to explain why a fireball dealt enough damage to a bunch of frost giants that Haley could kill them with sneak attacks.
    Assuming that Haley and V both rolled max damage would be tantamount to assuming Rule of Plot, IMO - by RAW the odds of that occurring would be, at minimum, one in quadrillions, i.e. functionally impossible. If it was a question of whether that happened, or if something unlikely but many orders of magnitude more probable was happening - Haley having gained a level and getting more sneak attack damage, V having an ability that increased hir fire damage, etc. - then it would make much less sense to privilege the status quo. Whether we could come up with a single plausible alternative explanation for the scene is, of course, another question entirely.

    Now, I don't think we need special circumstances to explain why the frost giants died so easily, so this is a hypothetical. But it's an artificial distinction to try and differentiate between "Rule of Plot" and "oh, they just happened to roll a damage total that they had a 1 in 1 trillion chance of producing." If we assume that the latter is plausible, then we also need to consider that Elan may well be a closet lammasu.
    Number of Character Appearances VII - To Absent Friends

    Currently playing a level 20 aasimar necromancer named Zebulun Salathiel and a level 9 goliath diviner named Lo-Kag.

    Quote Originally Posted by Fyraltari View Post
    Quote Originally Posted by Peelee View Post
    Player: Bob twists the vault door super hard, that should open it.
    DM: Why would you think that?
    Player: Well, Bob thinks it. And since Bob has high Int and Wis, and a lot of points in Dungeoneering, he would probably know a thing or two about how to open vault doors.
    Ah yes, the Dungeon-Kruger effect.

  6. - Top - End - #366
    Barbarian in the Playground
    Join Date
    Sep 2014

    Default Re: Class and Level Geekery XIV - We are the Geek Pantheon

    Not just in that direction. A Frost Giant has (14d8+70)hp. Now, that's generally treated as 133hp, assuming an average roll of 4.5 (in the middle of the bell curve).

    But an average roll of 4 is 126hp.
    An average roll of 3.5 is 119hp
    An average roll of 3 is 112hp
    An average roll of 2.5 is 105hp.

    It is entirely possible to roll very badly (or very well). That's the whole POINT of having XdY+Z numbers rather than just a straight figure, after all! At what point does a giant's HP get ludicrously low, IYO?

    [And, of course, flip the whole thing for damage rolls]
    Last edited by Reboot; 2016-09-18 at 05:47 PM.

  7. - Top - End - #367
    Titan in the Playground
     
    Jasdoif's Avatar

    Join Date
    Mar 2007
    Location
    Oregon, USA

    Default Re: Class and Level Geekery XIV - We are the Geek Pantheon

    Quote Originally Posted by Emanick View Post
    Now, I don't think we need special circumstances to explain why the frost giants died so easily, so this is a hypothetical. But it's an artificial distinction to try and differentiate between "Rule of Plot" and "oh, they just happened to roll a damage total that they had a 1 in 1 trillion chance of producing." If we assume that the latter is plausible, then we also need to consider that Elan may well be a closet lammasu.
    What matters is that the latter is possible under the existing writeup we have for Haley, meaning there's no way to guarantee a modification for that writeup would be more accurate (or equally accurate).


    But since I'm curious now....OK, let's see how the average results go.

    A frost giant has an average of 133 hp. Vaarsuvius didn't declare any metamagic modifiers, so the spell isn't modified by metamagic (mode average for spells cast without metamagic modifiers declared). That's 10d6 fire damage because of the cap, which averages 35; since frost giants are vulnerable to fire, that's increased by 50% for 52.5 .

    Haley's base bow damage against the frost giants would be 1d8+5(enhancement); for an average of 9.5. So Haley's sneak attack damage would have to come up with the remaining (133-52.5-9.5) 71 points of damage.

    Since sneak attack is measures in d6s, and the average on a d6 is 3.5, that requires 20 and two-sevenths d6s...since sneak attack comes in d6 increments, that means we'd have to take the ceiling to get enough damage. That's 21d6.

    OK...If Haley was a level 30 rogue, she'd have 15d6 base sneak attack damage, and could have taken Improved Sneak Attack six times (the standard feats at 21, 24, 27, 30; and the rogue epic bonus feats at 24 and 28) to get 21d6.


    So, totally average rolls require Haley to be level 30. I'm...actually not sure if that's worse odds than the Elanmasu.
    Last edited by Jasdoif; 2016-09-18 at 07:09 PM.
    Feytouched Banana eldritch disciple avatar by...me!

    The Index of the Giant's Comments VI―Making Dogma from Zapped Bananas

  8. - Top - End - #368
    Bugbear in the Playground
     
    Seto's Avatar

    Join Date
    Sep 2013
    Location
    Paris, France
    Gender
    Male

    Default Re: Class and Level Geekery XIV - We are the Geek Pantheon

    Wouldn't it be easier to assume that V rolled very well? Unless I'm mistaken, V rolls once for Fireball's damage and it applies to all affected creatures, whereas Haley rolls separate damage for every sneak attack. Therefore, it find it really unlikely that Haley rolled max damage or close to max for every one of the four giants... but the possibility of V rolling max damage or close to max, on the other hand, is entirely acceptable.

    If that's the case, the math gives us max 90 damage coming from the Fireball (which is a lot better than 52.5), and Haley has to fill the rest... which is still really unlikely. Oh well. She probably was very lucky. (Or, to put it that way, I find that "Haley was really lucky" is still more credible than "Haley is 30th level").
    Avatar by Mr_Saturn
    ______________________
    • Kids, watch Buffy.
    Quote Originally Posted by Bard1cKnowledge
    Charisma, it makes the difference between "Oh hey, it's this guy!" And "oh hey it's this guy."
    My True Neutral Handbook, a resource for creating and playing TN characters.

    Check out my extended signature and the "Gitp regulars as..." that I've been honored with!

  9. - Top - End - #369
    Titan in the Playground
     
    Jasdoif's Avatar

    Join Date
    Mar 2007
    Location
    Oregon, USA

    Default Re: Class and Level Geekery XIV - We are the Geek Pantheon

    Quote Originally Posted by Seto View Post
    (Or, to put it that way, I find that "Haley was really lucky" is still more credible than "Haley is 30th level").
    Exactly my point: Allowing for Haley (and Vaarsuvius) to roll really high works with average-sounding levels; whereas assuming Haley and Vaarsuvius each rolled the statistically most likely roll needs beyond-outlandishly-high levels.

    There's no inherent stabilization with operating on average rolls throughout, it simply shifts the unusually-high-number-ness onto the builds. And "I guess Haley and Vaarsuvius rolled really good this time! Oh well..." is far more tenable than "Haley must be the highest, or one of the highest, level characters in the comic!" The former can be isolated to the one comic, while the latter would need to be reflected in following comics (and raise questions about earlier comics).
    Feytouched Banana eldritch disciple avatar by...me!

    The Index of the Giant's Comments VI―Making Dogma from Zapped Bananas

  10. - Top - End - #370
    Bugbear in the Playground
     
    Quild's Avatar

    Join Date
    Jul 2009
    Location
    Paris, France
    Gender
    Male

    Default Re: Class and Level Geekery XIV - We are the Geek Pantheon

    I thought the standard approach here was "is what we see possible with what we know?". If answer is yes, then we can't add anything. Sadly.

    V's Fireball probably does 15-90 damage each target.
    Haley's attacks do 14-61 damage each target.
    That's 29-151 damage for each target.

    Frost Giants have 84-182 HP.

    So Haley and V were lucky, no Giant had high HP and they rolled rather well.
    Posting from France
    Sorry for my accent.

    Thanks to neoseph7 for my avatar (Allen Walker from D.Gray-Man)

  11. - Top - End - #371
    Orc in the Playground
     
    SwashbucklerGuy

    Join Date
    Oct 2012

    Default Re: Class and Level Geekery XIV - We are the Geek Pantheon

    Quote Originally Posted by Emanick View Post
    Assuming that Haley and V both rolled max damage would be tantamount to assuming Rule of Plot, IMO - by RAW the odds of that occurring would be, at minimum, one in quadrillions, i.e. functionally impossible.
    Please show your math. Is it really one in quadrillions? Also they don't need max (which is granted probably unlikely), but just "very high", or the frost giants below average. If the frost giants are average (133HP seem the accepted value) Haley and V needs to roll between 133 and their max, which is 151 (per Quild), thats a lot of non-6s rolled (152-133 is 19 short of max). As some of the damage is fixed (+5 for the bow etc).

    Thus if V maxed the damge, Haley can roll 19 below her max of 56 (from the roll without modifiers by 1d8 and 8d6), which is 37. What is the chance of rolling 37 or above with 1d8 and 8d6 four times in a row? I don't know, but my guess is that its better than one-in-quadrillions.

    If you want to do the math, you need to figure out how likely each roll is (for both the giants HP, and V and Haleys attacks), and then evaluate these against eachother.

    Thus if the giants rolled below average, and only had, lets say 126HP then Haley should just roll 30 or above on 1d8 and 8d6 four times in a row to kill them.

    Quilds numbers suggest that Haley+V do 29-151 damage, and the giants have 84-182 HP. So Haley and V might not need maximum, but I cannot be bothered to calculate the exact % for every fight in the comic. But the chance that every creature have average HP, and every attack does average damage, sound MORE unlikely to me than Haley and V rolling high enough to kill the frost giants

    Using just the average is stupid, as sometimes we would end up with creatures with 1/2 a hit point (the problem is that as 10.5 is the average of 3d6, but clearly not a likely result of 3d6).

    As calculating the likely outcomes of the batlle gets very tricky, it is better to use min-max.

  12. - Top - End - #372
    Barbarian in the Playground
     
    Dr.Zero's Avatar

    Join Date
    Sep 2015
    Location
    Italy
    Gender
    Male

    Default Re: Class and Level Geekery XIV - We are the Geek Pantheon

    Quote Originally Posted by Tobtor View Post
    As calculating the likely outcomes of the batlle gets very tricky, it is better to use min-max.
    Luckily we can simulate it.
    The results after 30000 simulations is shown here (I didn't do more in librecalc, because so much were already making my cpu's fan scream for air)



    Please, notice that I subdivided the simulation in groups of 4 giants (for the effect of the fireball)

    Anyway, we have approximately 13/10000 giants killed. Not in a single case a group of 4 was killed.

    But knowing the average probability to kill a giant is enough, even if 13/10000 on a simulation of only 30000 can give a high error.

    So let's be very generous and say that the real probability to kill 1 (one) FG is instead 20/10000=1/500.

    Killing 4 of them requires (1/500)^4=1/62.500.000.000.
    So no more than 1 chance on 62.5 billions, even being quite generous with the errors.

    Edit: I correct myself. The probability is not exactly computed in that way, because, since the damage of V's fireball is the same for all the giants in the same group, the events are not independent (translating this in common: since the damage of the fireball is the same for all the 4 of them, if coupled with Haley's damage it's enough to kill one of them, then there's a greater chance that the coupled damages can kill the others).

    If I came with some way to compute this, without a simulation requiring 1 million examples, I'd inform you.
    Last edited by Dr.Zero; 2016-09-19 at 04:42 PM.

  13. - Top - End - #373
    Bugbear in the Playground
     
    5a Violista's Avatar

    Join Date
    Jun 2012
    Location
    Next to the Mandolinist

    Default Re: Class and Level Geekery XIV - We are the Geek Pantheon

    You can calculate this with statistics-math without having to run tons of experiments.

    Anyway, I just thought of something that could possibly severely complicate this: what are the chances all of the Frost Giants started the battle at full HP? If they all have regeneration or natural healing powers or an abundance of healers, then it seems pretty likely, but hundreds of combat-ready Frost Giants gathered together in a place with falling rocs with little notice aren't guaranteed to always be at 100% optimal strength (unless there was little-to-no thought put into what they were doing before appearing in front of the PCs). If they had been previously cliff-jumping or defending their villages from rocs or rocks or dwarves, or whatever else and don't have access to easy healing, then many of them will be at lower-than-full HP.

    If they weren't at full HP, would there be some visual cue?
    Last edited by 5a Violista; 2016-09-19 at 06:59 PM.
    Favorite sports:
    Fencing
    Football (Soccer)
    Figure Skating
    (and basically everything else that starts with 'f')
    ALSO! Come roleplay FFRPG in the Nexus!
    Nexus Characters.

  14. - Top - End - #374
    Bugbear in the Playground
     
    ElfWarriorGuy

    Join Date
    May 2006
    Location
    The sticks
    Gender
    Male

    Default Re: Class and Level Geekery XIV - We are the Geek Pantheon

    This is a can of worms, but how do we know characters *always* state invoked meta-magic? I mean, sure, they usually do just like they usually say spell names when casting. But they don't always do it. We simply dont know that casters arent occasionally Maximizing their spells and not stating it.

    Of course; the downside is that it would cast uncertainty on all our existing spell slot math.
    Last edited by Crusher; 2016-09-19 at 08:24 PM.

  15. - Top - End - #375
    Pixie in the Playground
     
    ElfWarriorGuy

    Join Date
    Sep 2016

    Default Re: Class and Level Geekery XIV - We are the Geek Pantheon

    While I agree that we shouldn't change the writeup for Haley and Vaarsuvius over this panel, I also think we shouldn't lean too much on the explanation of "lucky roll". There's a fairly good chance that we'll see similarly destructive effects multiple times in the near future, and the odds of "lucky roll" being the explanation for this event multiple times over might get pretty faint.

    I don't think that we have to assume that these frost giants are standard 133 HP warriors, though. There are a LOT of these guys which, to me, means that they are mooks to our heroes. It seems reasonable to say that at least some of these frost giants aren't fully trained warriors and don't have the typical stats.

    As a humorous side note, one of the groups I GM for seems convinced (and not without some evidence) that my d6 rolls average somewhere around 4.75.

  16. - Top - End - #376
    Halfling in the Playground
     
    OldWizardGuy

    Join Date
    Dec 2013

    Default Re: Class and Level Geekery XIV - We are the Geek Pantheon

    Quote Originally Posted by Mahonri Violist View Post

    If they weren't at full HP, would there be some visual cue?
    There "should" be some visual cue if a character is damaged, at least the giant has been putting damage marks in since the start of the comic. So since the frost giants did not have any marks showing damage prior to getting fireballed, I think we can say they were effectively at full HP for them. I think the biggest thing we should concentrate on is the fact that the fireball "boom" is BIG. V has used fireball MANY times (I'm sure someone will link to them) but I have never seen a boom that big.. is it possible the giant is using a critical hit system and somehow V rolled the 20? Or is there a feat or something that unlocks criticals for spells? Because while the frost giants being weak against fire does explain a little bit of them taking more damage, it does not explain why this fireball goes BOOM compared to the many other FB's that V has thrown.

  17. - Top - End - #377
    Barbarian in the Playground
     
    Dr.Zero's Avatar

    Join Date
    Sep 2015
    Location
    Italy
    Gender
    Male

    Default Re: Class and Level Geekery XIV - We are the Geek Pantheon

    Quote Originally Posted by Mahonri Violist View Post
    You can calculate this with statistics-math without having to run tons of experiments.

    Anyway, I just thought of something that could possibly severely complicate this: what are the chances all of the Frost Giants started the battle at full HP? If they all have regeneration or natural healing powers or an abundance of healers, then it seems pretty likely, but hundreds of combat-ready Frost Giants gathered together in a place with falling rocs with little notice aren't guaranteed to always be at 100% optimal strength (unless there was little-to-no thought put into what they were doing before appearing in front of the PCs). If they had been previously cliff-jumping or defending their villages from rocs or rocks or dwarves, or whatever else and don't have access to easy healing, then many of them will be at lower-than-full HP.

    If they weren't at full HP, would there be some visual cue?
    Usually yes, everytime someone is hurt or not at full HP, there are clearly visible cuts and bruises.

    About the numbers, there are two ways that I can think of.
    First one: I write some lines of codes in C and let them run for a while.
    Probably in a couple of hours I can get some tens of millions of simulations.
    The other one is using the data of the 120.000 simulations (yes, I managed to go so far in librecalc, still no group of 4 killed) to get average and standard deviation of the MAX residual HP of a group of 4 giants (since that is the value that must be 0 to kill them all) and then SUPPOSING that the normal distribution is a good approximation... do nothing, because I think the table of values in my old books don't go so far to probabilities near 1/1.000.000 or worse. :D

    If there is another good (and fast) solution, feel free to write your results. :)

    Or we can just agree that it was practically impossible to see such an event and it happened because rule of plot and move on, more of less as for Familicide (this maybe is the best solution :D).

  18. - Top - End - #378
    Barbarian in the Playground
     
    PaladinGuy

    Join Date
    Aug 2012
    Location
    Scotland
    Gender
    Male

    Default Re: Class and Level Geekery XIV - We are the Geek Pantheon

    I've re-read my post and I've spotted that I missed a very important point: since I'm assuming average HP for the giants, assuming averages elsewhere is entirely appropriate.

  19. - Top - End - #379
    Bugbear in the Playground
     
    Quild's Avatar

    Join Date
    Jul 2009
    Location
    Paris, France
    Gender
    Male

    Default Re: Class and Level Geekery XIV - We are the Geek Pantheon

    Quote Originally Posted by Dr.Zero View Post
    Luckily we can simulate it.
    The results after 30000 simulations is shown here (I didn't do more in librecalc, because so much were already making my cpu's fan scream for air)
    [...]
    If I came with some way to compute this, without a simulation requiring 1 million examples, I'd inform you.
    Maybe consider this approach.

    V rolled very well. Like 54 or more on 10d6 (not sure about my calculation but I think there's like a 0,0045% chance of that), then you can make your simulations with Haley's damage.
    So V did 80 damages to each Giant.

    Now don't forget that Haley still can crit (with 1/19 chances since we know she didn't fumble)

    You should have easier time for 2 or 3 giants to be dead at the same time and... even 4!
    Chances are still low for the 4 to be dead even considering these unlikely high damages from V but still, it can happen.


    Also these Frost Giant all have white hair instead of "light blue or dirty yellow" in SRD. Maybe these are only the older of their clan. Maybe they are from this very Frost Giant's clan with moderately lower CON than usual.
    Posting from France
    Sorry for my accent.

    Thanks to neoseph7 for my avatar (Allen Walker from D.Gray-Man)

  20. - Top - End - #380
    Barbarian in the Playground
     
    Dr.Zero's Avatar

    Join Date
    Sep 2015
    Location
    Italy
    Gender
    Male

    Default Re: Class and Level Geekery XIV - We are the Geek Pantheon

    Quote Originally Posted by Quild View Post
    Maybe consider this approach.

    V rolled very well. Like 54 or more on 10d6 (not sure about my calculation but I think there's like a 0,0045% chance of that), then you can make your simulations with Haley's damage.
    So V did 80 damages to each Giant.

    Now don't forget that Haley still can crit (with 1/19 chances since we know she didn't fumble)

    You should have easier time for 2 or 3 giants to be dead at the same time and... even 4!
    Chances are still low for the 4 to be dead even considering these unlikely high damages from V but still, it can happen.


    Also these Frost Giant all have white hair instead of "light blue or dirty yellow" in SRD. Maybe these are only the older of their clan. Maybe they are from this very Frost Giant's clan with moderately lower CON than usual.
    About the fumbling, technically a simulation cannot work in that way. :)
    If we work taking in account what happens in the strip, then the probability of them killing 4 giants (and doing the relative high damage) is 100%, since it is exactly what happens.
    A simulation tries all the outcomes and then check the chances to get what we see.
    Anyway, I made it run 10 millions of time with and without fumbling.
    This is without fumbling
    Spoiler: 10 blocks, up to 10.000.000 runs, without fumbling for Haley
    Show

    ---------------------------------------
    After 1e+06 runs:
    Average HP Giant0: Starting=132.987 Ending=39.0096
    Average HP Giant1: Starting=132.989 Ending=39.0214
    Average HP Giant2: Starting=133.002 Ending=39.0254
    Average HP Giant3: Starting=132.999 Ending=39.0291
    Average Fireball damage=52.4972
    Average Haley's crits=0.0500063 Fumblings(ignored, will be 0)=0
    Average Haley's base damage=9.97723 Sneak damage=31.4985 Total damage=41.4757
    Average Total damage=93.9729
    Probability at least 1 Giants killed=0.007217 (Absolutes = 7217)
    Probability at least 2 Giants killed=0.000259 (Absolutes = 259)
    Probability at least 3 Giants killed=1.1e-05 (Absolutes = 11)
    Probability at least 4 Giants killed=1e-06 (Absolutes = 1)
    ---------------------------------------
    ---------------------------------------
    After 2e+06 runs:
    Average HP Giant0: Starting=132.994 Ending=39.0213
    Average HP Giant1: Starting=132.999 Ending=39.0304
    Average HP Giant2: Starting=132.995 Ending=39.0242
    Average HP Giant3: Starting=132.999 Ending=39.0232
    Average Fireball damage=52.497
    Average Haley's crits=0.0499801 Fumblings(ignored, will be 0)=0
    Average Haley's base damage=9.97613 Sneak damage=31.4989 Total damage=41.475
    Average Total damage=93.9721
    Probability at least 1 Giants killed=0.0071665 (Absolutes = 14333)
    Probability at least 2 Giants killed=0.0002465 (Absolutes = 493)
    Probability at least 3 Giants killed=1.15e-05 (Absolutes = 23)
    Probability at least 4 Giants killed=5e-07 (Absolutes = 1)
    ---------------------------------------
    ---------------------------------------
    After 3e+06 runs:
    Average HP Giant0: Starting=132.989 Ending=39.0146
    Average HP Giant1: Starting=132.999 Ending=39.0279
    Average HP Giant2: Starting=132.989 Ending=39.0162
    Average HP Giant3: Starting=133.001 Ending=39.028
    Average Fireball damage=52.4993
    Average Haley's crits=0.0499354 Fumblings(ignored, will be 0)=0
    Average Haley's base damage=9.97466 Sneak damage=31.4989 Total damage=41.4735
    Average Total damage=93.9729
    Probability at least 1 Giants killed=0.007197 (Absolutes = 21591)
    Probability at least 2 Giants killed=0.000246333 (Absolutes = 739)
    Probability at least 3 Giants killed=1.33333e-05 (Absolutes = 40)
    Probability at least 4 Giants killed=1e-06 (Absolutes = 3)
    ---------------------------------------
    ---------------------------------------
    After 4e+06 runs:
    Average HP Giant0: Starting=132.991 Ending=39.0157
    Average HP Giant1: Starting=132.997 Ending=39.0229
    Average HP Giant2: Starting=132.993 Ending=39.0171
    Average HP Giant3: Starting=133 Ending=39.0239
    Average Fireball damage=52.5028
    Average Haley's crits=0.0499337 Fumblings(ignored, will be 0)=0
    Average Haley's base damage=9.97465 Sneak damage=31.4979 Total damage=41.4725
    Average Total damage=93.9753
    Probability at least 1 Giants killed=0.007195 (Absolutes = 28780)
    Probability at least 2 Giants killed=0.0002425 (Absolutes = 970)
    Probability at least 3 Giants killed=1.25e-05 (Absolutes = 50)
    Probability at least 4 Giants killed=7.5e-07 (Absolutes = 3)
    ---------------------------------------
    ---------------------------------------
    After 5e+06 runs:
    Average HP Giant0: Starting=132.993 Ending=39.017
    Average HP Giant1: Starting=132.996 Ending=39.0186
    Average HP Giant2: Starting=132.993 Ending=39.0165
    Average HP Giant3: Starting=133 Ending=39.0233
    Average Fireball damage=52.5041
    Average Haley's crits=0.049943 Fumblings(ignored, will be 0)=0
    Average Haley's base damage=9.9746 Sneak damage=31.4979 Total damage=41.4725
    Average Total damage=93.9766
    Probability at least 1 Giants killed=0.0071914 (Absolutes = 35957)
    Probability at least 2 Giants killed=0.0002434 (Absolutes = 1217)
    Probability at least 3 Giants killed=1.26e-05 (Absolutes = 63)
    Probability at least 4 Giants killed=8e-07 (Absolutes = 4)
    ---------------------------------------
    ---------------------------------------
    After 6e+06 runs:
    Average HP Giant0: Starting=132.997 Ending=39.0204
    Average HP Giant1: Starting=132.997 Ending=39.0194
    Average HP Giant2: Starting=132.993 Ending=39.0177
    Average HP Giant3: Starting=132.999 Ending=39.0233
    Average Fireball damage=52.5033
    Average Haley's crits=0.0499609 Fumblings(ignored, will be 0)=0
    Average Haley's base damage=9.97459 Sneak damage=31.4985 Total damage=41.473
    Average Total damage=93.9763
    Probability at least 1 Giants killed=0.00718583 (Absolutes = 43115)
    Probability at least 2 Giants killed=0.000242333 (Absolutes = 1454)
    Probability at least 3 Giants killed=1.18333e-05 (Absolutes = 71)
    Probability at least 4 Giants killed=6.66667e-07 (Absolutes = 4)
    ---------------------------------------
    ---------------------------------------
    After 7e+06 runs:
    Average HP Giant0: Starting=132.997 Ending=39.0245
    Average HP Giant1: Starting=132.998 Ending=39.0232
    Average HP Giant2: Starting=132.995 Ending=39.0205
    Average HP Giant3: Starting=132.999 Ending=39.026
    Average Fireball damage=52.5005
    Average Haley's crits=0.0499421 Fumblings(ignored, will be 0)=0
    Average Haley's base damage=9.97432 Sneak damage=31.4987 Total damage=41.473
    Average Total damage=93.9736
    Probability at least 1 Giants killed=0.00719129 (Absolutes = 50339)
    Probability at least 2 Giants killed=0.000241143 (Absolutes = 1688)
    Probability at least 3 Giants killed=1.21429e-05 (Absolutes = 85)
    Probability at least 4 Giants killed=5.71429e-07 (Absolutes = 4)
    ---------------------------------------
    ---------------------------------------
    After 8e+06 runs:
    Average HP Giant0: Starting=132.996 Ending=39.0217
    Average HP Giant1: Starting=132.998 Ending=39.0227
    Average HP Giant2: Starting=132.995 Ending=39.02
    Average HP Giant3: Starting=132.998 Ending=39.0248
    Average Fireball damage=52.5012
    Average Haley's crits=0.0499641 Fumblings(ignored, will be 0)=0
    Average Haley's base damage=9.97464 Sneak damage=31.4989 Total damage=41.4735
    Average Total damage=93.9747
    Probability at least 1 Giants killed=0.00719925 (Absolutes = 57594)
    Probability at least 2 Giants killed=0.000245375 (Absolutes = 1963)
    Probability at least 3 Giants killed=1.1875e-05 (Absolutes = 95)
    Probability at least 4 Giants killed=5e-07 (Absolutes = 4)
    ---------------------------------------
    ---------------------------------------
    After 9e+06 runs:
    Average HP Giant0: Starting=132.997 Ending=39.021
    Average HP Giant1: Starting=132.999 Ending=39.0233
    Average HP Giant2: Starting=132.997 Ending=39.0202
    Average HP Giant3: Starting=132.998 Ending=39.0224
    Average Fireball damage=52.5018
    Average Haley's crits=0.0499691 Fumblings(ignored, will be 0)=0
    Average Haley's base damage=9.97477 Sneak damage=31.4992 Total damage=41.474
    Average Total damage=93.9758
    Probability at least 1 Giants killed=0.00720244 (Absolutes = 64822)
    Probability at least 2 Giants killed=0.000245556 (Absolutes = 2210)
    Probability at least 3 Giants killed=1.2e-05 (Absolutes = 108)
    Probability at least 4 Giants killed=4.44444e-07 (Absolutes = 4)
    ---------------------------------------
    ---------------------------------------
    After 1e+07 runs:
    Average HP Giant0: Starting=132.997 Ending=39.0208
    Average HP Giant1: Starting=132.999 Ending=39.0234
    Average HP Giant2: Starting=132.997 Ending=39.0199
    Average HP Giant3: Starting=132.999 Ending=39.0237
    Average Fireball damage=52.5021
    Average Haley's crits=0.049974 Fumblings(ignored, will be 0)=0
    Average Haley's base damage=9.97481 Sneak damage=31.4991 Total damage=41.4739
    Average Total damage=93.976
    Probability at least 1 Giants killed=0.0072066 (Absolutes = 72066)
    Probability at least 2 Giants killed=0.0002451 (Absolutes = 2451)
    Probability at least 3 Giants killed=1.17e-05 (Absolutes = 117)
    Probability at least 4 Giants killed=4e-07 (Absolutes = 4)
    ---------------------------------------


    Spoiler: 10 blocks, up to 10.000.000 runs, with Haley fumbling
    Show

    ---------------------------------------
    After 1e+06 runs:
    Average HP Giant0: Starting=132.987 Ending=41.0616
    Average HP Giant1: Starting=132.989 Ending=41.0679
    Average HP Giant2: Starting=133.002 Ending=41.0796
    Average HP Giant3: Starting=132.999 Ending=41.0882
    Average Fireball damage=52.4972
    Average Haley's crits=0.0500063 Fumblings=0.0500628
    Average Haley's base damage=9.50139 Sneak damage=29.9214 Total damage=39.4228
    Average Total damage=91.9199
    Probability at least 1 Giants killed=0.006995 (Absolutes = 6995)
    Probability at least 2 Giants killed=0.000241 (Absolutes = 241)
    Probability at least 3 Giants killed=9e-06 (Absolutes = 9)
    Probability at least 4 Giants killed=1e-06 (Absolutes = 1)
    ---------------------------------------
    ---------------------------------------
    After 2e+06 runs:
    Average HP Giant0: Starting=132.994 Ending=41.0762
    Average HP Giant1: Starting=132.999 Ending=41.0804
    Average HP Giant2: Starting=132.995 Ending=41.0781
    Average HP Giant3: Starting=132.999 Ending=41.0784
    Average Fireball damage=52.497
    Average Haley's crits=0.0499801 Fumblings=0.0500766
    Average Haley's base damage=9.50019 Sneak damage=29.9214 Total damage=39.4216
    Average Total damage=91.9186
    Probability at least 1 Giants killed=0.006934 (Absolutes = 13868)
    Probability at least 2 Giants killed=0.000229 (Absolutes = 458)
    Probability at least 3 Giants killed=9e-06 (Absolutes = 18)
    Probability at least 4 Giants killed=5e-07 (Absolutes = 1)
    ---------------------------------------
    ---------------------------------------
    After 3e+06 runs:
    Average HP Giant0: Starting=132.989 Ending=41.0585
    Average HP Giant1: Starting=132.999 Ending=41.0788
    Average HP Giant2: Starting=132.989 Ending=41.0664
    Average HP Giant3: Starting=133.001 Ending=41.0776
    Average Fireball damage=52.4993
    Average Haley's crits=0.0499354 Fumblings=0.0499631
    Average Haley's base damage=9.49983 Sneak damage=29.9251 Total damage=39.4249
    Average Total damage=91.9242
    Probability at least 1 Giants killed=0.006964 (Absolutes = 20892)
    Probability at least 2 Giants killed=0.000227667 (Absolutes = 683)
    Probability at least 3 Giants killed=1.13333e-05 (Absolutes = 34)
    Probability at least 4 Giants killed=1e-06 (Absolutes = 3)
    ---------------------------------------
    ---------------------------------------
    After 4e+06 runs:
    Average HP Giant0: Starting=132.991 Ending=41.0599
    Average HP Giant1: Starting=132.997 Ending=41.0753
    Average HP Giant2: Starting=132.993 Ending=41.0697
    Average HP Giant3: Starting=133 Ending=41.0743
    Average Fireball damage=52.5028
    Average Haley's crits=0.0499337 Fumblings=0.0500012
    Average Haley's base damage=9.49944 Sneak damage=29.9232 Total damage=39.4226
    Average Total damage=91.9254
    Probability at least 1 Giants killed=0.00696475 (Absolutes = 27859)
    Probability at least 2 Giants killed=0.000225 (Absolutes = 900)
    Probability at least 3 Giants killed=1.05e-05 (Absolutes = 42)
    Probability at least 4 Giants killed=7.5e-07 (Absolutes = 3)
    ---------------------------------------
    ---------------------------------------
    After 5e+06 runs:
    Average HP Giant0: Starting=132.993 Ending=41.0608
    Average HP Giant1: Starting=132.996 Ending=41.068
    Average HP Giant2: Starting=132.993 Ending=41.0666
    Average HP Giant3: Starting=133 Ending=41.072
    Average Fireball damage=52.5041
    Average Haley's crits=0.049943 Fumblings=0.0499489
    Average Haley's base damage=9.5 Sneak damage=29.9245 Total damage=39.4245
    Average Total damage=91.9286
    Probability at least 1 Giants killed=0.0069636 (Absolutes = 34818)
    Probability at least 2 Giants killed=0.0002266 (Absolutes = 1133)
    Probability at least 3 Giants killed=1.08e-05 (Absolutes = 54)
    Probability at least 4 Giants killed=8e-07 (Absolutes = 4)
    ---------------------------------------
    ---------------------------------------
    After 6e+06 runs:
    Average HP Giant0: Starting=132.997 Ending=41.0657
    Average HP Giant1: Starting=132.997 Ending=41.0722
    Average HP Giant2: Starting=132.993 Ending=41.0669
    Average HP Giant3: Starting=132.999 Ending=41.0736
    Average Fireball damage=52.5033
    Average Haley's crits=0.0499609 Fumblings=0.0499819
    Average Haley's base damage=9.49966 Sneak damage=29.924 Total damage=39.4237
    Average Total damage=91.9269
    Probability at least 1 Giants killed=0.00695783 (Absolutes = 41747)
    Probability at least 2 Giants killed=0.000226333 (Absolutes = 1358)
    Probability at least 3 Giants killed=9.83333e-06 (Absolutes = 59)
    Probability at least 4 Giants killed=6.66667e-07 (Absolutes = 4)
    ---------------------------------------
    ---------------------------------------
    After 7e+06 runs:
    Average HP Giant0: Starting=132.997 Ending=41.0702
    Average HP Giant1: Starting=132.998 Ending=41.0757
    Average HP Giant2: Starting=132.995 Ending=41.0689
    Average HP Giant3: Starting=132.999 Ending=41.0758
    Average Fireball damage=52.5005
    Average Haley's crits=0.0499421 Fumblings=0.0499733
    Average Haley's base damage=9.49947 Sneak damage=29.9245 Total damage=39.424
    Average Total damage=91.9245
    Probability at least 1 Giants killed=0.00696357 (Absolutes = 48745)
    Probability at least 2 Giants killed=0.000225571 (Absolutes = 1579)
    Probability at least 3 Giants killed=1.02857e-05 (Absolutes = 72)
    Probability at least 4 Giants killed=5.71429e-07 (Absolutes = 4)
    ---------------------------------------
    ---------------------------------------
    After 8e+06 runs:
    Average HP Giant0: Starting=132.996 Ending=41.0678
    Average HP Giant1: Starting=132.998 Ending=41.0748
    Average HP Giant2: Starting=132.995 Ending=41.0673
    Average HP Giant3: Starting=132.998 Ending=41.075
    Average Fireball damage=52.5012
    Average Haley's crits=0.0499641 Fumblings=0.0499701
    Average Haley's base damage=9.49983 Sneak damage=29.9247 Total damage=39.4245
    Average Total damage=91.9258
    Probability at least 1 Giants killed=0.00697225 (Absolutes = 55778)
    Probability at least 2 Giants killed=0.000229375 (Absolutes = 1835)
    Probability at least 3 Giants killed=1e-05 (Absolutes = 80)
    Probability at least 4 Giants killed=5e-07 (Absolutes = 4)
    ---------------------------------------
    ---------------------------------------
    After 9e+06 runs:
    Average HP Giant0: Starting=132.997 Ending=41.0675
    Average HP Giant1: Starting=132.999 Ending=41.0764
    Average HP Giant2: Starting=132.997 Ending=41.0665
    Average HP Giant3: Starting=132.998 Ending=41.0726
    Average Fireball damage=52.5018
    Average Haley's crits=0.0499691 Fumblings=0.0499705
    Average Haley's base damage=9.49997 Sneak damage=29.925 Total damage=39.425
    Average Total damage=91.9268
    Probability at least 1 Giants killed=0.00697489 (Absolutes = 62774)
    Probability at least 2 Giants killed=0.000229222 (Absolutes = 2063)
    Probability at least 3 Giants killed=1.02222e-05 (Absolutes = 92)
    Probability at least 4 Giants killed=4.44444e-07 (Absolutes = 4)
    ---------------------------------------
    ---------------------------------------
    After 1e+07 runs:
    Average HP Giant0: Starting=132.997 Ending=41.0668
    Average HP Giant1: Starting=132.999 Ending=41.0761
    Average HP Giant2: Starting=132.997 Ending=41.0653
    Average HP Giant3: Starting=132.999 Ending=41.0738
    Average Fireball damage=52.5021
    Average Haley's crits=0.049974 Fumblings=0.0499582
    Average Haley's base damage=9.50009 Sneak damage=29.9253 Total damage=39.4254
    Average Total damage=91.9274
    Probability at least 1 Giants killed=0.0069782 (Absolutes = 69782)
    Probability at least 2 Giants killed=0.0002284 (Absolutes = 2284)
    Probability at least 3 Giants killed=1.01e-05 (Absolutes = 101)
    Probability at least 4 Giants killed=4e-07 (Absolutes = 4)
    ---------------------------------------


    So anyone can choose his preferred system.
    Anyway it doesn't change a lot, it's always 4/10.000.000 the cases where all the 4 of them were killed.

  21. - Top - End - #381
    Dwarf in the Playground
    Join Date
    Dec 2014

    Default Re: Class and Level Geekery XIV - We are the Geek Pantheon

    Quote Originally Posted by Dr.Zero View Post

    If there is another good (and fast) solution, feel free to write your results. :)
    Oh, you kids today, who grew up with computers. Back when I was a kid, we had to do these things by hand (after walking uphill to school both ways in the snow, of course). [/geezer]

    FWIW, with or without computer help, I think it's still easier to calculate all the possible (equally likely) outcomes than it is to simulate. In fact, given that they're all exactly equally likely, it's slightly more rigorous, too, since for any arbitrarily large number of simulations, there's still a non-zero (if slim) chance that you got an unlikely result in your simulation.

    In the age of google, we don't even have to do our own work--there's a spreadsheet here that will do it for us. http://www.wikihow.com/Calculate-Mul...-Probabilities

    I am, however, with the consensus that adding in probabilities makes the thread less rigorous, not more. For the purposes of this thread, our assumption is that the stickverse operates under 3.5 rules but we can't make any assumptions about how unlikely anything we see on panel may have been. Which, if you think about it, is kind of how science works, too--that's the whole reason why we have to run experiments lots of times, to make sure that our first result wasn't anomalous...

  22. - Top - End - #382
    Orc in the Playground
     
    SwashbucklerGuy

    Join Date
    Oct 2012

    Default Re: Class and Level Geekery XIV - We are the Geek Pantheon

    Quote Originally Posted by Quartz View Post
    I've re-read my post and I've spotted that I missed a very important point: since I'm assuming average HP for the giants, assuming averages elsewhere is entirely appropriate.
    No it doesn't work like that. Lets say a creature have 3d6 hit points (for an average of 10.5), and is hit by a person doing 1d12 (average 6.5)+x damage. If averages are used, we should suggest that x is above 4. Even though 0 is still a likely explenation (if the 3d6 creature had 10 or less (50%), there would be 2/12 for it to be killed by x=0, 3/12 byt X=1 etc).

    Now I agree that in the current situation it is less likely than this, however the problem is: where to set the line, at 5%, at 1%, at one in a million (which will always happen), one in ten millions?

    It is a good guide to whether or not it is a good idea to engage said creature (or to calculate your ability in a min-max environment), but as we don't KNOW what the creatures score actually was it becomes moot.

    Dr.Zero: To understand your mode, I have a question. How did you make V's damage the same for all four giants?
    Did it run:
    1. test all four giants for health individually (G1-G4)
    2. Calculate Vs damage and subtract that damage from each Giant
    3 calculate Halyes damage four times and aply it in order

    or?

    And could you do a set where V had maximised the fireball (for 90damage).

  23. - Top - End - #383
    Barbarian in the Playground
     
    Dr.Zero's Avatar

    Join Date
    Sep 2015
    Location
    Italy
    Gender
    Male

    Default Re: Class and Level Geekery XIV - We are the Geek Pantheon

    Quote Originally Posted by Ephemera View Post
    Oh, you kids today, who grew up with computers. Back when I was a kid, we had to do these things by hand (after walking uphill to school both ways in the snow, of course). [/geezer]
    Tsk, that's nothing. To have the milk for my morning breakfast, I had to go to milk the cows, and since we were terribly poor and couldn't afford a bucket, I had to transport the milk keeping it in my cupped hand. This, of course, walking shoeless in the snow. (I remember a line like this from The Cosby's show ).

    Quote Originally Posted by Ephemera View Post
    FWIW, with or without computer help, I think it's still easier to calculate all the possible (equally likely) outcomes than it is to simulate.
    Not really, here we have not a bunch of dice of the same kind, which indeed can easily be approximated with the normal distribution even if they are too many, but more complex operations, with a lot of combinations involved.


    Quote Originally Posted by Tobtor View Post

    Dr.Zero: To understand your mode, I have a question. How did you make V's damage the same for all four giants?
    Did it run:
    1. test all four giants for health individually (G1-G4)
    2. Calculate Vs damage and subtract that damage from each Giant
    3 calculate Halyes damage four times and aply it in order

    or?

    And could you do a set where V had maximised the fireball (for 90damage).
    Yes, to all three of them.
    If you know C++ I can copy here the code, since it's pretty simple and standard (aside for the RNG library which is basically a wrapper around boost randomizer library).
    So if someone knows C++ can run some test (and check if I did some mistake, since I've written in on the fly ).

    Spoiler: C++ Code. Notice the Fireball damage
    Show

    Code:
    #include "RNG.h"
    
    using Integer=double;
    
    class FrostGiant
    {
    private:
        Integer hp_;
    public:
        void starting_values()
            {   hp_=70+RNG::rollN(14,8);}
        FrostGiant()
            { hp_=0; }
        void subtractDamage(const Integer damage)
            { hp_-=damage; }
        void sumHP(const FrostGiant& g)
            { hp_+=g.hp_;}
        bool isDead() const
            { return hp_<=0; }
        Integer HP() const
            { return hp_; }
    
    };
    class Haley
    {
    private:
    public:
        static Integer base_damage()
            {   return RNG::roll1(8)+5; }
        static Integer sneak_damage()
            {   return RNG::rollN(9,6); }
        static Integer hit_roll()
            {   return RNG::roll1(20);}
    };
    
    class FireBall
    {
    private:
    public:
        static Integer damage()
            {   return RNG::rollN(10,6); }
    };
    
    class Sim
    {
    private:
        const unsigned int num_giants=4;
        Integer runs;
        vector<FrostGiant> tot_starting;
        vector<FrostGiant> tot_ending;
        vector<FrostGiant> giants;
        Integer Tot_Fireball;
        Integer Tot_H_bd, Tot_H_sd, Tot_H, Tot_H_critHits, Tot_H_fumbling, Tot_H_totD;
        vector<Integer> numkills;
    public:
        Sim();
        void run_one();
        void print_averages();
    
    };
    
    Sim::Sim()
    {    runs=0; giants.resize(num_giants); tot_starting.resize(num_giants); tot_ending.resize(num_giants); numkills.resize(num_giants);}
    
    void Sim::run_one()
    {
        ++runs;
        unsigned int num_kills=0;
        Integer fireball=(1.5*FireBall::damage());
        for (unsigned int i=0; i<giants.size(); ++i)
        {
            giants[i].starting_values();
            tot_starting[i].sumHP(giants[i]);
            Tot_Fireball+=fireball;
            Integer haley_hit_roll=Haley::hit_roll();
            Integer haley_bd=Haley::base_damage();
            Integer haley_sd=Haley::sneak_damage();
            if (haley_hit_roll==20) {
                Tot_H_critHits++; haley_bd*=2;
            }
    
            if (haley_hit_roll==1)  {
                Tot_H_fumbling++; haley_bd=0; haley_sd=0;
            }
            Tot_H_bd+=haley_bd;
            Tot_H_sd+=haley_sd;
            Tot_H+=(haley_bd+haley_sd);
            Integer tot_damage=(fireball+haley_bd+haley_sd);
            Tot_H_totD+=tot_damage;
            giants[i].subtractDamage(tot_damage);
            tot_ending[i].sumHP(giants[i]);
            if (giants[i].isDead()) {
                numkills[num_kills]+=1;
                ++num_kills;
            }
        }
    }
    
    void Sim::print_averages()
    {
        cout << "---------------------------------------" << endl;
        cout << "After " << runs << " runs:" << endl;
        for (unsigned int i=0; i<num_giants; ++i) {
            cout << "Average HP Giant" << i <<": Starting=" << tot_starting[i].HP()/runs << "    Ending="<< tot_ending[i].HP()/runs << endl;
        }
        cout << "Average Fireball damage=" << Tot_Fireball/(runs*num_giants) << endl;
        cout << "Average Haley's crits=" << Tot_H_critHits/(runs*num_giants) << "    Fumblings=" << Tot_H_fumbling/(runs*num_giants) << endl;
        cout << "Average Haley's base damage=" << Tot_H_bd/(runs*num_giants) << "    Sneak damage=" << Tot_H_sd/(runs*num_giants) << "    Total damage=" << Tot_H/(runs*num_giants) <<endl;
        cout << "Average Total damage=" << Tot_H_totD/(runs*num_giants) << endl;
        for (unsigned int i=0; i< num_giants; ++i) {
            cout <<  "Probability at least " << i+1 << " Giants killed=" << numkills[i] /runs << " (Absolutes = " << numkills[i] << ")" << endl;
        }
        cout << "---------------------------------------" << endl;
    }
    
    
    
    int main(int argc, char *argv[])
    {
        Sim simulator;
        for (Integer i=0; i<10; ++i)
        {
            for (Integer j=0; j<1000000; ++j)
            {
                simulator.run_one();
            }
            simulator.print_averages();
        }
    }


    For the maximed fireball, sure.
    Spoiler: 10.000.000 simulations with maximized fireball
    Show

    ---------------------------------------
    After 1e+06 runs:
    Average HP Giant0: Starting=132.992 Ending=3.57377
    Average HP Giant1: Starting=132.993 Ending=3.56982
    Average HP Giant2: Starting=133.012 Ending=3.59707
    Average HP Giant3: Starting=132.994 Ending=3.56385
    Average Fireball damage=90
    Average Haley's crits=0.0498328 Fumblings=0.050067
    Average Haley's base damage=9.49727 Sneak damage=29.9241 Total damage=39.4214
    Average Total damage=129.421
    Probability at least 1 Giants killed=0.898376 (Absolutes = 898376)
    Probability at least 2 Giants killed=0.585738 (Absolutes = 585738)
    Probability at least 3 Giants killed=0.223701 (Absolutes = 223701)
    Probability at least 4 Giants killed=0.036451 (Absolutes = 36451)
    ---------------------------------------
    ---------------------------------------
    After 2e+06 runs:
    Average HP Giant0: Starting=132.991 Ending=3.56325
    Average HP Giant1: Starting=132.987 Ending=3.55605
    Average HP Giant2: Starting=133.01 Ending=3.59462
    Average HP Giant3: Starting=132.991 Ending=3.5701
    Average Fireball damage=90
    Average Haley's crits=0.0499006 Fumblings=0.0500106
    Average Haley's base damage=9.49799 Sneak damage=29.9257 Total damage=39.4237
    Average Total damage=129.424
    Probability at least 1 Giants killed=0.898802 (Absolutes = 1.7976e+06)
    Probability at least 2 Giants killed=0.586232 (Absolutes = 1.17246e+06)
    Probability at least 3 Giants killed=0.223581 (Absolutes = 447162)
    Probability at least 4 Giants killed=0.0364735 (Absolutes = 72947)
    ---------------------------------------
    ---------------------------------------
    After 3e+06 runs:
    Average HP Giant0: Starting=132.991 Ending=3.56215
    Average HP Giant1: Starting=132.991 Ending=3.56325
    Average HP Giant2: Starting=133.004 Ending=3.58389
    Average HP Giant3: Starting=132.998 Ending=3.58041
    Average Fireball damage=90
    Average Haley's crits=0.0498813 Fumblings=0.0500064
    Average Haley's base damage=9.49839 Sneak damage=29.925 Total damage=39.4234
    Average Total damage=129.423
    Probability at least 1 Giants killed=0.898926 (Absolutes = 2.69678e+06)
    Probability at least 2 Giants killed=0.586354 (Absolutes = 1.75906e+06)
    Probability at least 3 Giants killed=0.223367 (Absolutes = 670101)
    Probability at least 4 Giants killed=0.0364603 (Absolutes = 109381)
    ---------------------------------------
    ---------------------------------------
    After 4e+06 runs:
    Average HP Giant0: Starting=132.99 Ending=3.56569
    Average HP Giant1: Starting=132.991 Ending=3.56183
    Average HP Giant2: Starting=133.003 Ending=3.58125
    Average HP Giant3: Starting=132.997 Ending=3.58164
    Average Fireball damage=90
    Average Haley's crits=0.0498922 Fumblings=0.049996
    Average Haley's base damage=9.49843 Sneak damage=29.9244 Total damage=39.4228
    Average Total damage=129.423
    Probability at least 1 Giants killed=0.899004 (Absolutes = 3.59602e+06)
    Probability at least 2 Giants killed=0.586305 (Absolutes = 2.34522e+06)
    Probability at least 3 Giants killed=0.22329 (Absolutes = 893160)
    Probability at least 4 Giants killed=0.036432 (Absolutes = 145728)
    ---------------------------------------
    ---------------------------------------
    After 5e+06 runs:
    Average HP Giant0: Starting=132.993 Ending=3.56895
    Average HP Giant1: Starting=132.993 Ending=3.56856
    Average HP Giant2: Starting=133.001 Ending=3.57707
    Average HP Giant3: Starting=132.997 Ending=3.57733
    Average Fireball damage=90
    Average Haley's crits=0.0498945 Fumblings=0.0500049
    Average Haley's base damage=9.49811 Sneak damage=29.9248 Total damage=39.4229
    Average Total damage=129.423
    Probability at least 1 Giants killed=0.899034 (Absolutes = 4.49517e+06)
    Probability at least 2 Giants killed=0.586266 (Absolutes = 2.93133e+06)
    Probability at least 3 Giants killed=0.223275 (Absolutes = 1.11638e+06)
    Probability at least 4 Giants killed=0.0363372 (Absolutes = 181686)
    ---------------------------------------
    ---------------------------------------
    After 6e+06 runs:
    Average HP Giant0: Starting=132.993 Ending=3.56978
    Average HP Giant1: Starting=132.993 Ending=3.56723
    Average HP Giant2: Starting=133 Ending=3.57702
    Average HP Giant3: Starting=132.997 Ending=3.57641
    Average Fireball damage=90
    Average Haley's crits=0.049896 Fumblings=0.0499987
    Average Haley's base damage=9.49838 Sneak damage=29.9249 Total damage=39.4233
    Average Total damage=129.423
    Probability at least 1 Giants killed=0.898968 (Absolutes = 5.39381e+06)
    Probability at least 2 Giants killed=0.586225 (Absolutes = 3.51735e+06)
    Probability at least 3 Giants killed=0.223369 (Absolutes = 1.34021e+06)
    Probability at least 4 Giants killed=0.0363432 (Absolutes = 218059)
    ---------------------------------------
    ---------------------------------------
    After 7e+06 runs:
    Average HP Giant0: Starting=132.994 Ending=3.57033
    Average HP Giant1: Starting=132.995 Ending=3.57117
    Average HP Giant2: Starting=133.001 Ending=3.58055
    Average HP Giant3: Starting=132.997 Ending=3.57484
    Average Fireball damage=90
    Average Haley's crits=0.0498847 Fumblings=0.0500176
    Average Haley's base damage=9.49845 Sneak damage=29.9241 Total damage=39.4226
    Average Total damage=129.423
    Probability at least 1 Giants killed=0.898971 (Absolutes = 6.29279e+06)
    Probability at least 2 Giants killed=0.586252 (Absolutes = 4.10376e+06)
    Probability at least 3 Giants killed=0.223334 (Absolutes = 1.56334e+06)
    Probability at least 4 Giants killed=0.036299 (Absolutes = 254093)
    ---------------------------------------
    ---------------------------------------
    After 8e+06 runs:
    Average HP Giant0: Starting=132.994 Ending=3.56912
    Average HP Giant1: Starting=132.996 Ending=3.57343
    Average HP Giant2: Starting=133.001 Ending=3.57908
    Average HP Giant3: Starting=132.997 Ending=3.57501
    Average Fireball damage=90
    Average Haley's crits=0.0499039 Fumblings=0.0500077
    Average Haley's base damage=9.49868 Sneak damage=29.9243 Total damage=39.423
    Average Total damage=129.423
    Probability at least 1 Giants killed=0.898873 (Absolutes = 7.19098e+06)
    Probability at least 2 Giants killed=0.58619 (Absolutes = 4.68952e+06)
    Probability at least 3 Giants killed=0.223311 (Absolutes = 1.78649e+06)
    Probability at least 4 Giants killed=0.0362969 (Absolutes = 290375)
    ---------------------------------------
    ---------------------------------------
    After 9e+06 runs:
    Average HP Giant0: Starting=132.994 Ending=3.56806
    Average HP Giant1: Starting=132.996 Ending=3.57263
    Average HP Giant2: Starting=133.001 Ending=3.57922
    Average HP Giant3: Starting=132.998 Ending=3.5731
    Average Fireball damage=90
    Average Haley's crits=0.0499135 Fumblings=0.0499952
    Average Haley's base damage=9.49908 Sneak damage=29.925 Total damage=39.424
    Average Total damage=129.424
    Probability at least 1 Giants killed=0.898881 (Absolutes = 8.08993e+06)
    Probability at least 2 Giants killed=0.586219 (Absolutes = 5.27597e+06)
    Probability at least 3 Giants killed=0.223384 (Absolutes = 2.01045e+06)
    Probability at least 4 Giants killed=0.0363111 (Absolutes = 326800)
    ---------------------------------------
    ---------------------------------------
    After 1e+07 runs:
    Average HP Giant0: Starting=132.994 Ending=3.56877
    Average HP Giant1: Starting=132.996 Ending=3.57055
    Average HP Giant2: Starting=133 Ending=3.57983
    Average HP Giant3: Starting=132.999 Ending=3.57368
    Average Fireball damage=90
    Average Haley's crits=0.0499272 Fumblings=0.0499979
    Average Haley's base damage=9.49908 Sneak damage=29.9251 Total damage=39.4242
    Average Total damage=129.424
    Probability at least 1 Giants killed=0.898941 (Absolutes = 8.98941e+06)
    Probability at least 2 Giants killed=0.586233 (Absolutes = 5.86233e+06)
    Probability at least 3 Giants killed=0.223377 (Absolutes = 2.23377e+06)
    Probability at least 4 Giants killed=0.0363045 (Absolutes = 363045)
    ---------------------------------------

  24. - Top - End - #384
    Titan in the Playground
     
    Jasdoif's Avatar

    Join Date
    Mar 2007
    Location
    Oregon, USA

    Default Re: Class and Level Geekery XIV - We are the Geek Pantheon

    Quote Originally Posted by Dr.Zero View Post
    Not really, here we have not a bunch of dice of the same kind, which indeed can easily be approximated with the normal distribution even if they are too many, but more complex operations, with a lot of combinations involved.
    HA! This problem just needs to be outsmarted.

    First off, our target number is 133 damage; the DMG does in fact say that a creature's full hit point is "usually average rolls on each Hit Die", so taking the average number listed in the stat block is perfectly valid (and almost certainly why the average is listed in the block in the first place).

    Spoiler: ZOMG MATH AND PYTHON
    Show
    Python's itertools' module has combination_with_replacement, which iterates through...combinations that allow elements to be repeated. So basically there will exactly one list returned with all ten 1s, exactly one with nine 1s and one 6, exactly one with five 3s three 4s and two 5s, etc. etc.

    So, we can determine the number actual permutations from that (by discarding things like switching the places of a 1 with another 1), without having to calculate every single permutation. With 10d6, this amounts to getting the counts of all 60,466,176 permutations with only 3,003 steps.


    First off, the import and function to do all that:
    Code:
    import collections
    import functools
    import itertools
    import math
    import operator
    
    def GenerateProductAggregate(thisIterable=[1,2,3,4,5,6], itemCount=10, aggregateFunction=operator.add, showDebug=False):
        thisAggregationTracker=collections.defaultdict(lambda: 0)
        totalPermutations=math.factorial(itemCount)
        for x in itertools.combinations_with_replacement(thisIterable,itemCount):
            thisAggregate=functools.reduce(aggregateFunction,x)
            # This counts how many times each value occurs in the combination....
            thisCounter=collections.Counter(x)
            # This multiplies the product of the factorials of each count
            # ..telling us how many permutations of this combination are identical
            thisIdenticalPermutationsPerCombinationCount=functools.reduce(operator.mul,map(math.factorial,thisCounter.values()))
            # And this divides the total permutations across the entire range by how many permutations are identical for this combination
            # ...so we're left with how many distinct permutations of this combination exist in the entire range
            thisDistinctPermutationsCount=totalPermutations//thisIdenticalPermutationsPerCombinationCount
            if showDebug:
                print("{0} -> {1}, * {2}".format(x,thisAggregate,thisDistinctPermutationsCount))
            thisAggregationTracker[thisAggregate]+=thisDistinctPermutationsCount
        return thisAggregationTracker
    Now because I was lazy I put the 10d6 in the defaults....So first step after assignment, making sure the number of rolls reflected is the actual number of possible rolls.

    (Note that ">>>" is the interpreter's prompt for input)
    Code:
    >>> fireballRoll=GenerateProductAggregate()
    >>> sum(fireballRoll.values())
    60466176
    >>> 6**10
    60466176
    So far so good.

    We have a dictionary (or associative array if you don't like the term), with the keys as the roll result and the values as the number of occurrences of that result; I'll be using that type of arrangement throughout.
    Spoiler: fireballRoll
    Show

    fireballRoll
    Result Number of Outcomes
    10 1
    11 10
    12 55
    13 220
    14 715
    15 2,002
    16 4,995
    17 11,340
    18 23,760
    19 46,420
    20 85,228
    21 147,940
    22 243,925
    23 383,470
    24 576,565
    25 831,204
    26 1,151,370
    27 1,535,040
    28 1,972,630
    29 2,446,300
    30 2,930,455
    31 3,393,610
    32 3,801,535
    33 4,121,260
    34 4,325,310
    35 4,395,456
    36 4,325,310
    37 4,121,260
    38 3,801,535
    39 3,393,610
    40 2,930,455
    41 2,446,300
    42 1,972,630
    43 1,535,040
    44 1,151,370
    45 831,204
    46 576,565
    47 383,470
    48 243,925
    49 147,940
    50 85,228
    51 46,420
    52 23,760
    53 11,340
    54 4,995
    55 2,002
    56 715
    57 220
    58 55
    59 10
    60 1
    TOTAL 60,466,176


    Next, another variable for adding the 50%. Per the rules, fractions are always rounded down...and since we won't have overlaps yet, I can just use a standard dictionary instead of the "default to zero" type I use(d) elsewhere here.
    Code:
    >>> fireballDamage={}
    >>> for x in fireballRoll.keys():
    	damage=math.floor(x*1.5)
    	fireballDamage[damage]=fireballRoll[x]
    Spoiler: fireballDamage
    Show

    fireballDamage
    Result Number of Outcomes
    15 1
    16 10
    18 55
    19 220
    21 715
    22 2,002
    24 4,995
    25 11,340
    27 23,760
    28 46,420
    30 85,228
    31 147,940
    33 243,925
    34 383,470
    36 576,565
    37 831,204
    39 1,151,370
    40 1,535,040
    42 1,972,630
    43 2,446,300
    45 2,930,455
    46 3,393,610
    48 3,801,535
    49 4,121,260
    51 4,325,310
    52 4,395,456
    54 4,325,310
    55 4,121,260
    57 3,801,535
    58 3,393,610
    60 2,930,455
    61 2,446,300
    63 1,972,630
    64 1,535,040
    66 1,151,370
    67 831,204
    69 576,565
    70 383,470
    72 243,925
    73 147,940
    75 85,228
    76 46,420
    78 23,760
    79 11,340
    81 4,995
    82 2,002
    84 715
    85 220
    87 55
    88 10
    90 1
    TOTAL 60,466,176



    Now to figure out Haley's contribution. For 8d6 sneak attack, I can just use the function from before:

    Code:
    >>> sneakAttackRoll=GenerateProductAggregate(itemCount=8)
    Spoiler: sneakAttackRoll
    Show

    sneakAttackRoll
    Result Number of Outcomes
    8 1
    9 8
    10 36
    11 120
    12 330
    13 792
    14 1,708
    15 3,368
    16 6,147
    17 10,480
    18 16,808
    19 25,488
    20 36,688
    21 50,288
    22 65,808
    23 82,384
    24 98,813
    25 113,688
    26 125,588
    27 133,288
    28 135,954
    29 133,288
    30 125,588
    31 113,688
    32 98,813
    33 82,384
    34 65,808
    35 50,288
    36 36,688
    37 25,488
    38 16,808
    39 10,480
    40 6,147
    41 3,368
    42 1,708
    43 792
    44 330
    45 120
    46 36
    47 8
    48 1
    TOTAL 1,679,616


    Because I'm still lazy, I'll manually add the arrow's 1d8+5 damage here. I suppose I could account for crits here, but if I modeled the attack roll I'd need to account for critical misses, and we didn't see any. Since the giants all survived the fireball and all were killed by Haley, I think it's close enough to simple ignore the possibility of critical misses and critical hits...especially since a longbow has a x3 crit so this ends up being more conservative.

    Code:
    >>> arrowDamage=collections.defaultdict(lambda: 0)
    >>> for x in sneakAttackRoll.keys():
    	for y in [1,2,3,4,5,6,7,8]:
    		arrowDamage[x+y+5]+=sneakAttackRoll[x]
    Spoiler: arrowDamage
    Show

    arrowDamage
    Result Number of Outcomes
    14 1
    15 9
    16 45
    17 165
    18 495
    19 1,287
    20 2,995
    21 6,363
    22 12,509
    23 22,981
    24 39,753
    25 65,121
    26 101,479
    27 150,975
    28 215,075
    29 294,091
    30 386,757
    31 489,965
    32 598,745
    33 706,545
    34 805,811
    35 888,811
    36 948,591
    37 979,895
    38 979,895
    39 948,591
    40 888,811
    41 805,811
    42 706,545
    43 598,745
    44 489,965
    45 386,757
    46 294,091
    47 215,075
    48 150,975
    49 101,479
    50 65,121
    51 39,753
    52 22,981
    53 12,509
    54 6,363
    55 2,995
    56 1,287
    57 495
    58 165
    59 45
    60 9
    61 1
    TOTAL 13,436,928



    OK. Now, since we want all four giants dead, we're interested in a lower bound on Haley's attack...that is, we'll take the outcomes for all four arrows and store the lowest of the four. I suppose I could've modified the original function to handle input to multiply for this, but...see also: lazy. It didn't even take a whole minute to do the iteration anyway.

    Code:
    >>> haleyDamage=collections.defaultdict(lambda: 0)
    >>> for x in itertools.product(arrowDamage.items(),repeat=4):
    	lowestDamage=functools.reduce(lambda x,y: min(x,y), (z[0] for z in x))
    	numberOfTries=functools.reduce(operator.mul, (z[1] for z in x))
    	haleyDamage[lowestDamage]+=numberOfTries
    Spoiler: haleyDamage
    Show

    haleyDamage
    Result Number of Outcomes
    14 9,704,203,897,576,520,687,615
    15 87,337,737,580,683,494,734,065
    16 436,686,055,477,960,677,287,535
    17 1,601,144,667,389,974,296,534,945
    18 4,803,080,103,416,456,520,611,535
    19 12,485,524,139,620,611,067,287,585
    20 29,041,391,922,166,764,817,111,455
    21 61,635,178,298,591,382,790,469,745
    22 120,913,161,008,878,929,144,420,015
    23 221,256,544,228,205,447,698,090,305
    24 380,053,483,287,389,727,410,494,431
    25 615,286,860,903,527,447,954,789,169
    26 940,939,442,553,678,038,357,710,831
    27 1,360,229,961,131,309,205,312,890,625
    28 1,857,774,769,661,536,141,874,609,375
    29 2,393,287,038,011,425,575,011,677,489
    30 2,900,787,579,435,495,006,023,134,095
    31 3,297,288,805,141,139,510,976,491,105
    32 3,501,897,530,401,375,007,115,253,215
    33 3,460,962,144,751,406,802,637,442,865
    34 3,169,499,452,911,383,387,407,169,215
    35 2,677,884,422,724,335,173,854,222,641
    36 2,078,206,287,843,842,765,704,969,839
    37 1,474,891,131,071,109,819,396,944,545
    38 952,955,012,078,869,235,432,582,495
    39 558,040,178,587,811,928,587,198,865
    40 294,800,928,076,812,006,020,105,935
    41 139,821,180,722,256,004,864,354,625
    42 59,236,738,361,466,648,704,667,855
    43 22,295,435,295,822,386,705,091,105
    44 7,410,783,331,796,918,421,074,335
    45 2,161,102,618,954,620,465,083,505
    46 548,832,550,594,353,383,172,815
    47 120,366,079,445,426,513,896,225
    48 22,576,124,780,224,510,802,175
    49 3,580,389,341,860,111,730,705
    50 473,677,132,871,346,982,095
    51 51,433,509,360,331,342,881
    52 4,493,093,464,112,486,079
    53 307,937,517,633,603,921
    54 16,030,297,910,699,919
    55 607,437,253,396,065
    56 15,802,745,063,391
    57 259,008,440,625
    58 2,333,409,375
    59 9,140,625
    60 9,999
    61 1
    TOTAL 32,598,675,906,340,458,022,469,369,856



    AND NOW! To put it all together: We get the total damage, by multiplying the outcomes of each pair of fireball and Haley damage and adding it into the sum of that damage.

    Code:
    >>> totalDamage=collections.defaultdict(lambda: 0)
    >>> for h in haleyDamage.keys():
    	for v in fireballDamage.keys():
    		totalDamage[h+v]+=haleyDamage[h]*fireballDamage[v]
    Spoiler: totalDamage
    Show

    totalDamage
    Result Number of Outcomes
    29 9,704,203,897,576,520,687,615
    30 184,379,776,556,448,701,610,215
    31 1,310,063,431,284,795,624,628,185
    32 6,501,736,436,536,289,707,229,120
    33 27,753,027,201,720,626,247,609,860
    34 103,748,360,492,823,382,365,711,660
    35 344,969,028,016,740,023,094,311,705
    36 1,050,344,628,607,095,377,984,368,325
    37 2,967,727,074,728,817,041,002,657,995
    38 7,842,016,439,471,804,857,673,456,850
    39 19,557,651,524,340,185,272,326,169,746
    40 46,340,357,693,101,717,319,616,628,974
    41 104,804,737,325,302,730,577,187,837,666
    42 227,233,004,243,960,475,717,451,426,650
    43 474,021,155,035,822,003,290,349,857,830
    44 954,141,221,213,573,724,299,783,572,974
    45 1,857,869,504,618,318,534,076,168,734,350
    46 3,507,188,364,604,461,073,487,296,358,482
    47 6,430,757,996,540,603,826,485,654,268,473
    48 11,472,096,580,707,076,910,131,270,099,657
    49 19,940,652,638,219,113,128,928,625,372,615
    50 33,815,894,555,356,815,019,594,380,438,196
    51 56,013,883,487,543,523,374,862,633,244,872
    52 90,724,057,707,804,657,120,630,353,629,240
    53 143,819,479,750,411,344,643,500,122,184,110
    54 223,336,067,046,266,745,895,704,179,820,338
    55 340,008,405,260,330,390,068,032,707,068,782
    56 507,837,388,174,987,321,404,857,422,822,028
    57 744,648,991,746,726,550,852,245,453,642,712
    58 1,072,590,776,688,272,821,788,929,657,031,208
    59 1,518,497,850,666,201,934,886,151,797,301,777
    60 2,114,046,559,193,244,813,267,529,905,666,165
    61 2,895,608,576,688,081,687,542,169,225,669,979
    62 3,903,718,025,933,661,653,351,289,200,676,166
    63 5,182,075,197,814,320,246,806,373,866,847,054
    64 6,776,030,276,747,941,308,407,308,398,801,810
    65 8,730,522,226,099,945,322,073,990,756,838,768
    66 11,087,495,790,699,089,085,584,989,509,166,224
    67 13,882,870,873,918,302,721,333,227,364,400,384
    68 17,143,192,165,945,714,392,659,922,865,746,466
    69 20,882,145,059,560,680,223,980,977,348,051,794
    70 25,097,184,554,432,876,728,751,346,601,756,030
    71 29,766,550,738,876,617,414,917,270,804,315,011
    72 34,846,945,387,447,021,097,274,263,034,201,219
    73 40,272,177,372,943,633,140,796,822,485,342,093
    74 45,953,029,716,685,175,144,991,243,349,502,668
    75 51,778,484,948,723,373,749,805,679,777,123,496
    76 57,618,444,154,536,717,874,835,401,279,511,640
    77 63,327,940,856,940,182,629,703,448,419,797,219
    78 68,752,631,699,368,652,126,488,747,865,424,263
    79 73,735,361,439,287,958,036,856,358,393,473,065
    80 78,123,473,451,010,645,094,776,651,930,587,780
    81 81,776,312,080,112,978,189,785,295,089,353,012
    82 84,572,469,582,066,425,465,293,902,117,124,460
    83 86,416,328,065,188,476,931,993,776,282,408,490
    84 87,243,320,593,306,513,337,528,551,027,882,522
    85 87,023,546,028,347,829,023,426,808,349,347,270
    86 85,763,534,257,738,749,465,212,866,078,963,848
    87 83,505,944,985,959,465,873,561,923,294,956,096
    88 80,327,207,481,436,516,454,662,514,592,478,528
    89 76,333,355,664,830,765,836,927,934,523,673,796
    90 71,654,324,967,520,011,522,802,660,264,178,076
    91 66,437,081,108,343,776,711,490,199,233,572,548
    92 60,838,149,924,743,153,356,567,473,774,692,216
    93 55,016,055,387,593,195,993,836,844,942,278,368
    94 49,124,093,412,072,631,920,616,673,103,368,640
    95 43,303,949,711,321,685,734,465,496,726,035,570
    96 37,680,521,397,137,299,795,971,564,908,679,946
    97 32,358,104,032,107,220,231,544,110,926,559,766
    98 27,418,105,373,256,209,298,620,187,150,576,724
    99 22,918,289,642,511,758,049,201,091,776,466,068
    100 18,893,371,895,428,277,870,791,774,012,524,012
    101 15,356,786,940,159,297,401,679,152,379,683,623
    102 12,303,376,244,873,890,003,272,471,061,344,479
    103 9,712,655,634,582,338,580,259,281,354,300,897
    104 7,552,382,651,268,936,017,938,013,781,964,996
    105 5,782,153,845,761,104,366,939,419,510,202,616
    106 4,356,778,934,693,868,388,267,441,346,969,016
    107 3,229,263,619,717,867,970,381,778,981,538,863
    108 2,353,287,193,545,286,868,053,272,787,713,003
    109 1,685,110,326,899,084,247,442,973,624,582,405
    110 1,184,913,460,178,066,618,450,018,082,845,818
    111 817,606,168,226,843,879,951,164,597,511,330
    112 553,175,774,686,716,635,472,306,417,751,134
    113 366,665,120,284,741,617,448,478,506,086,496
    114 237,874,871,595,642,023,888,970,929,242,576
    115 150,882,445,472,967,725,164,461,046,063,024
    116 93,460,046,153,381,490,811,879,460,682,126
    117 56,459,404,327,877,145,716,198,759,530,942
    118 33,214,437,979,769,777,776,359,724,935,682
    119 18,996,648,988,686,119,882,453,907,794,525
    120 10,543,308,894,211,711,227,755,593,080,669
    121 5,666,523,021,485,148,561,284,897,747,571
    122 2,942,210,614,464,039,676,427,375,069,140
    123 1,471,979,836,106,639,655,178,340,168,584
    124 707,488,736,691,763,796,217,994,931,640
    125 325,610,965,458,893,051,607,133,723,726
    126 142,973,770,936,251,845,322,353,899,442
    127 59,654,464,977,012,184,413,501,805,838
    128 23,546,917,504,837,517,988,764,317,772
    129 8,750,183,157,525,880,335,424,222,552
    130 3,045,047,357,212,121,268,504,882,760
    131 986,765,779,424,367,511,808,208,573
    132 296,036,768,064,025,483,713,379,265
    133 81,744,586,715,239,518,045,882,767
    134 20,656,148,597,387,653,356,833,638
    135 4,748,130,952,351,528,093,642,654
    136 986,078,275,883,113,881,622,466
    137 183,432,166,109,935,423,128,490
    138 30,220,979,971,588,417,880,682
    139 4,345,806,089,356,535,434,310
    140 535,689,570,857,930,519,370
    141 55,398,212,735,054,346,786
    142 4,686,864,142,420,932,462
    143 314,881,561,031,662,453
    144 16,202,572,843,654,989
    145 610,155,677,518,435
    146 15,826,581,891,736
    147 259,100,396,820
    148 2,333,509,420
    149 9,140,635
    150 9,999
    151 1
    TOTAL 1,971,117,274,719,741,650,707,244,872,321,990,656


    So, how many outcomes are we talking about here?
    Code:
    >>> sum(totalDamage.values())
    1971117274719741650707244872321990656
    1,971,117,274,719,741,650,707,244,872,321,990,656. ..Nearly 2 undecillion! That's a lot alright...how many of those are 133 damage or more?

    Code:
    >>> sum(x[1] for x in totalDamage.items() if x[0]>=133)
    108353539599390806738008113
    108,353,539,599,390,806,738,008,113...over 100 septillion. That's comparatively tiny...What are the odds of that?
    Code:
    >>> 108353539599390806738008113/1971117274719741650707244872321990656
    5.497062046437434e-11
    ...yeah. While that's an approximation, that comes to...

    0.00000000549706204643743%. Not very likely to happen by chance, to understate it mildly.


    Alright. Hypothetically...what if we added another die to Haley's sneak attack and assumed it was always a 6? We can have that effect easily by dropping our target number by 6 and keeping the current results, so....

    Code:
    >>> sum(x[1] for x in totalDamage.items() if x[0]>=127)
    96387769083675487808454824873
    96,387,769,083,675,487,808,454,824,873. That's 96 octillion. That's around a thousand times more likely, but still...pretty unlikely. Oh well, odds!

    Code:
    >>> 96387769083675487808454824873/1971117274719741650707244872321990656
    4.890006815925255e-08
    Which comes to...0.00000489000681592525%. Yeah...comparatively more likely, but I think we're weighing iotas here.
    So long story short, we're talking some exceptional rolling here. 0.00000000549706204643743% chance of killing all four giants with level 16. Even bumping it up to level 17 Haley and assuming her extra sneak attack die is always a 6 still only gets us to 0.00000489000681592525% chance.

    Quote Originally Posted by Tobtor View Post
    And could you do a set where V had maximised the fireball (for 90damage).
    Spoiler: ZOMG MOAR MATH AND PYTHON
    Show
    For that, we'll just use the numbers for Haley's damage from last time, and take Vaarsuvius' 90 damage off the target number of 133. So with the 8d6 Haley....

    Code:
    >>> sum(x[1] for x in haleyDamage.items() if x[0]>=43)
    32563206319062802795425841
    >>> sum(x[1] for x in haleyDamage.items())
    32598675906340458022469369856
    So 32,563,206,319,062,802,795,425,841 (about 32.5 septillion) out of 32,598,675,906,340,458,022,469,369,856 (about 32 octillion). That comes out to....

    Code:
    >>> 32563206319062802795425841/32598675906340458022469369856
    0.0009989119316569923
    That's the number there; to get the percentage you'd multiply by 100, which would get us around 0.1%. One tenth of a percent is a great deal better than the others, but still not in betting range.


    OK, since we're dealing only with Haley's damage now, it's easy enough to run alternate numbers with 9d6 sneak attack. So let me do that....

    Code:
    >>> altSneakAttackRoll=GenerateProductAggregate(itemCount=9)
    >>> altArrowDamage={}
    >>> altArrowDamage=collections.defaultdict(lambda: 0)
    >>> for x in altSneakAttackRoll.keys():
    	for y in [1,2,3,4,5,6,7,8]:
    		altArrowDamage[x+y+5]+=altSneakAttackRoll[x]
    
    >>> altHaleyDamage=collections.defaultdict(lambda: 0)
    >>> for x in itertools.product(altArrowDamage.items(),repeat=4):
    	lowestDamage=functools.reduce(lambda x,y: min(x,y), (z[0] for z in x))
    	numberOfTries=functools.reduce(operator.mul, (z[1] for z in x))
    	altHaleyDamage[lowestDamage]+=numberOfTries
    Spoiler: altHaleyDamage
    Show

    altHaleyDamage
    Result Number of Outcomes
    15 2,096,108,236,871,633,984,864,255
    16 20,961,078,078,824,195,856,615,120
    17 115,285,790,012,114,488,087,965,985
    18 461,140,800,614,626,907,378,109,440
    19 1,498,681,530,467,137,732,908,361,455
    20 4,196,096,160,219,545,871,609,816,496
    21 10,470,013,482,557,524,140,060,347,504
    22 23,778,725,812,968,606,871,443,723,600
    23 49,858,689,758,712,803,017,020,328,896
    24 97,499,952,645,779,358,158,640,310,000
    25 179,142,843,879,587,131,885,894,091,264
    26 310,917,040,645,232,523,584,401,598,736
    27 511,614,057,098,493,828,070,823,206,864
    28 800,025,907,110,397,056,083,373,719,600
    29 1,190,217,573,295,291,697,595,283,169,760
    30 1,684,789,837,319,703,659,771,005,669,840
    31 2,267,171,289,712,419,038,716,751,633,936
    32 2,895,381,290,239,208,000,546,347,225,584
    33 3,500,862,396,495,601,138,907,420,224,416
    34 3,995,953,270,369,880,365,961,882,101,264
    35 4,291,345,828,510,346,338,960,866,465,920
    36 4,320,413,057,355,691,948,156,001,185,200
    37 4,062,320,999,216,842,104,767,429,869,360
    38 3,553,556,866,532,558,366,695,574,703,440
    39 2,880,740,996,586,797,022,761,601,384,816
    40 2,155,812,376,935,085,552,810,119,801,904
    41 1,483,551,115,713,651,579,097,188,188,160
    42 935,185,065,492,539,119,357,895,594,960
    43 537,899,846,846,690,089,843,842,104,976
    44 281,181,909,247,155,864,038,444,692,144
    45 133,037,081,483,662,450,664,547,746,000
    46 56,727,114,137,374,747,019,740,811,856
    47 21,699,933,644,394,744,663,682,885,504
    48 7,410,360,356,052,521,263,879,789,040
    49 2,246,982,660,040,208,331,912,975,456
    50 601,390,581,952,893,223,633,776,144
    51 141,129,322,773,425,370,580,623,856
    52 28,820,702,039,014,096,696,372,784
    53 5,077,637,342,053,823,581,101,600
    54 764,061,827,501,870,178,992,080
    55 97,046,873,621,846,529,400,880
    56 10,259,505,574,442,508,818,160
    57 887,566,532,603,564,408,320
    58 61,537,532,204,048,161,040
    59 3,330,771,835,629,188,160
    60 136,069,278,067,239,600
    61 4,012,627,897,643,920
    62 80,320,480,320,080
    63 997,315,418,385
    64 6,671,610,880
    65 18,960,095
    66 14,640
    67 1
    TOTAL 42,247,883,974,617,233,597,120,303,333,376


    So how's it look this way?
    Code:
    >>> sum(x[1] for x in altHaleyDamage.items() if x[0]>=43)
    1040980518940259710373453055601
    >>> sum(x[1] for x in altHaleyDamage.items())
    42247883974617233597120303333376
    So that's 1,040,980,518,940,259,710,373,453,055,601 (about 1 novillion) out of 42,247,883,974,617,233,597,120,303,333,376 (about 42 novillion)....Quite an improvement so far. That gives us:
    Code:
    >>> 1040980518940259710373453055601/42247883974617233597120303333376
    0.02463982621154912
    Again, you'd multiply by 100 to get the percentage, which is around 2.5%.
    OK, so if for some reason this is the first time we've seen a maximized spell without it being called maximized, and Haley is level 17/18 for 9d6 sneak attack, the odds of this scene being pulled off by rolling comes to 2.5%, so half as likely as a natural 20. An improvement over the earlier approaches, to be sure; but it's still a lot of guesswork and assumption to end up at "still pretty darn unlikely".


    I remain standing by "exceptional rolling happened here!"
    Last edited by Jasdoif; 2016-09-21 at 01:44 AM.
    Feytouched Banana eldritch disciple avatar by...me!

    The Index of the Giant's Comments VI―Making Dogma from Zapped Bananas

  25. - Top - End - #385
    Surgebinder in the Playground Moderator
     
    Douglas's Avatar

    Join Date
    Aug 2005
    Location
    Mountain View, CA
    Gender
    Male

    Default Re: Class and Level Geekery XIV - We are the Geek Pantheon

    You all realize it's extremely unlikely Rich actually checked the numbers before drawing this, right?

    I'd guess his thought process went something like "Fireball's a pretty big blast of an element they take extra damage from, and Haley's throwing high level sneak damage on every single shot. Frost giants are tough, but not that tough. Seems about right."
    Like 4X (aka Civilization-like) gaming? Know programming? Interested in game development? Take a look.

    Avatar by Ceika.

    Archives:
    Spoiler
    Show
    Saberhagen's Twelve Swords, some homebrew artifacts for 3.5 (please comment)
    Isstinen Tonche for ECL 74 playtesting.
    Team Solars: Powergaming beyond your wildest imagining, without infinite loops or epic. Yes, the DM asked for it.
    Arcane Swordsage: Making it actually work (homebrew)

  26. - Top - End - #386
    Bugbear in the Playground
     
    Quild's Avatar

    Join Date
    Jul 2009
    Location
    Paris, France
    Gender
    Male

    Default Re: Class and Level Geekery XIV - We are the Geek Pantheon

    Quote Originally Posted by Douglas View Post
    You all realize it's extremely unlikely Rich actually checked the numbers before drawing this, right?

    I'd guess his thought process went something like "Fireball's a pretty big blast of an element they take extra damage from, and Haley's throwing high level sneak damage on every single shot. Frost giants are tough, but not that tough. Seems about right."
    Of course we know this! We're aware that we're crazy to overthink things like that. It would be terrible if we were not!

    But I don't see where this discussion is going either. Even if the chances for V and Haley to kill those Giants with one fireball and 4 arrows are in the vicinity of 0,001%, it's still possible, so...
    Posting from France
    Sorry for my accent.

    Thanks to neoseph7 for my avatar (Allen Walker from D.Gray-Man)

  27. - Top - End - #387
    Dwarf in the Playground
    Join Date
    Dec 2014

    Default Re: Class and Level Geekery XIV - We are the Geek Pantheon

    Jasidoif, that is some nice work (well, I'll assume it is, I'm far, far too lazy to actually read your code so I'll happily take it on faith that you're right).

    Presumably, if we still care, the greatest chances of this happening would involve the giants (not the Giants) all having below average HP. I'm confident that my intuition is good enough to posit that while it's not that likely they all rolled significantly below average, it's not going to be so unlikely as to shift the odds slightly in Haley's favor given just how low they are as is.

    It won't help for the purposes of the thread (since we can't rule out what we saw anyway) but is it plausible that there's another factor? Maybe V cast an off-panel flame arrow? Or is there something useful Haley could be carrying since we know she stocks at least cold iron and silver arrows as special ammunition? Presumably we'd see a visual effect if she were using flaming burst arrows, but they could be giantbane, I guess. Admittedly, this seems like a bit of a stretch.

  28. - Top - End - #388
    Orc in the Playground
     
    SwashbucklerGuy

    Join Date
    Oct 2012

    Default Re: Class and Level Geekery XIV - We are the Geek Pantheon

    Quote Originally Posted by Jasdoif View Post

    OK, so if for some reason this is the first time we've seen a maximized spell without it being called maximized, and Haley is level 17/18 for 9d6 sneak attack, the odds of this scene being pulled off by rolling comes to 2.5%, so half as likely as a natural 20. An improvement over the earlier approaches, to be sure; but it's still a lot of guesswork and assumption to end up at "still pretty darn unlikely".


    I remain standing by "exceptional rolling happened here!"
    Exceptional yes, both with and without maximised, but we also do assumption on the basis of the giants (average), which could tip it more or less likely. This is sort of my point: to model it we need multiple scenarios, calculate averages etc, and this should then be done for every combat (etc), to get LIKELY stats for them. But we don't want "likely" stats, we wants "what stats do they actually have as a minimum and maximum".

    Whenever we see a wizard we could assume he has at least 14 int (how many wizards dont? I bet it is less than 2.5% of wizards I have seen withint less than 14), but we dont do that, since we want confirmation.

  29. - Top - End - #389
    Titan in the Playground
     
    Jasdoif's Avatar

    Join Date
    Mar 2007
    Location
    Oregon, USA

    Default Re: Class and Level Geekery XIV - We are the Geek Pantheon

    Quote Originally Posted by Douglas View Post
    You all realize it's extremely unlikely Rich actually checked the numbers before drawing this, right?
    Yes, but this is way more fun!

    Quote Originally Posted by Tobtor View Post
    Exceptional yes, both with and without maximised, but we also do assumption on the basis of the giants (average), which could tip it more or less likely.
    The DMG specifically says monsters usually have average HP; so unless we have evidence that these giants don't, we're probably OK here.

    Quote Originally Posted by Tobtor View Post
    This is sort of my point: to model it we need multiple scenarios, calculate averages etc, and this should then be done for every combat (etc), to get LIKELY stats for them. But we don't want "likely" stats, we wants "what stats do they actually have as a minimum and maximum".
    I figure if the "change it to appeal to the average" proposals don't even shift the odds enough to appeal to the average, they fail on their own merits...and wouldn't be valid even if that was the kind of thing this thread did. And it certainly doesn't move me to consider altering the thread's approach; this isn't the first scenario where our determination-by-upper-and-lower-bounds approach has been questioned.


    I've been testing scenarios, and so far I've only seen one idea mentioned that would actually accomplish on probabilities: If Vaarsuvius were using an empowered maximized fireball, and Haley was doing the as-her-currently-listed-level-entails 8d6 sneak attack, there's a 99.67% chance of all the giants being killed. Of course, then the questions become why Vaarsuvius didn't say it was empowered or maximized unlike the overwhelming majority of metamagic-ed spells, and why Vaarsuvius would prepare it instead of an 8th level spell.

    Even my intentionally absurd "standard fireball plus 21d6 sneak attack to succeed on all average everywhere!" ends up only pulling it off 28.69% of the time when Haley has to roll individually for all four giants.
    Feytouched Banana eldritch disciple avatar by...me!

    The Index of the Giant's Comments VI―Making Dogma from Zapped Bananas

  30. - Top - End - #390
    Banned
     
    zimmerwald1915's Avatar

    Join Date
    Mar 2010
    Location
    Lake Wobegon
    Gender
    Male

    Default Re: Class and Level Geekery XIV - We are the Geek Pantheon

    Quote Originally Posted by Jasdoif View Post
    I've been testing scenarios, and so far I've only seen one idea mentioned that would actually accomplish on probabilities: If Vaarsuvius were using an empowered maximized fireball, and Haley was doing the as-her-currently-listed-level-entails 8d6 sneak attack, there's a 99.67% chance of all the giants being killed.
    Has anyone mentioned the possibility of a delayed blast fireball? It can explode immediately like a regular fireball, and would do 16d6*1.5 damage even unmodified (in order to modify the spell with metamagic, V would need 9th-level spell slots or a rod).

    Quote Originally Posted by Jasdoif View Post
    Of course, then the questions become why Vaarsuvius didn't say it was empowered or maximized unlike the overwhelming majority of metamagic-ed spells
    comic way too wordy for chief grukgruk sometimes.

    It'd be an odd cut to make, to be sure.
    Last edited by zimmerwald1915; 2016-09-21 at 01:48 PM.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •