Item Search
     
BG-Wiki Search
+ Reply to Thread
Page 4 of 9 FirstFirst ... 2 3 4 5 6 ... LastLast
Results 61 to 80 of 172

Thread: pDif and damage     submit to reddit submit to twitter

  1. #61
    Masamune
    Guest

    Those last posts' conclusions are pretty interesting Motenten.

    Before posting additional info that might confirm your thoughts/findings, i have one question:

    For a given cRatio, regarding the Crits Range (compared to normal hits range), is there a proof that it's not constant w/e cRatio is ? (i have no faith in my regression lines for CritMaxs and crit mins due to low sample sizes and even no data at low cRatios).
    I'm asking this because i might have a demonstration showing crits are simply a translation on the left of normal hits...

  2. #62
    Chram
    Join Date
    Sep 2007
    Posts
    2,526
    BG Level
    7
    FFXI Server
    Fenrir

    Quote Originally Posted by Masamune View Post
    Those last posts' conclusions are pretty interesting Motenten.

    Before posting additional info that might confirm your thoughts/findings, i have one question:

    For a given cRatio, regarding the Crits Range (compared to normal hits range), is there a proof that it's not constant w/e cRatio is ? (i have no faith in my regression lines for CritMaxs and crit mins due to low sample sizes and even no data at low cRatios).
    I'm asking this because i might have a demonstration showing crits are simply a translation on the left of normal hits...
    Technically, yes, you could just say that min crit is cRatio + 0.625 and max crit is cRatio + 0.625 + 0.750, but there's really no point when conceptually it's easier to consider it cRatio + 1, and then +/- 0.375.

    Also, while not proof, there's still the issue of the imbalance in frequency results above vs below the central line (either cRatio or critRatio). As such, it's better to consider it as critRatio = cRatio +1, and then working with above and below that line. You can't really analyze the frequency imbalance if you treat it purely as a shift from cRatio.

    And, while I'm not entirely sure you're implying this, no, it's not possible that crits are simply using min/max normal pDif + 1. Those lines have entirely different slopes.

  3. #63
    Masamune
    Guest

    Ok thanks.

    BTW, by "imbalance in freqs each side of central line", do you mean the pDIF=3 line ?
    If yes, i think there is an explanation (which is similar for the generation of the pDIF=1 spike): as cRatio increases, more and more values goes above pDIF=3, so the cap function interferes, putting those values back at pDIF=3+randomizer, hence yu see thse freqs above 3 barely slightly higher than those below when cRatio just passed above 1,65; but then yu starting to see them really noticeable when cRatio goes above 1,8ish+, that's proof of the effect of the cap function.

  4. #64
    Chram
    Join Date
    Sep 2007
    Posts
    2,526
    BG Level
    7
    FFXI Server
    Fenrir

    Quote Originally Posted by Masamune View Post
    Ok thanks.

    BTW, by "imbalance in freqs each side of central line", do you mean the pDIF=3 line ?
    If yes, i think there is an explanation (which is similar for the generation of the pDIF=1 spike): as cRatio increases, more and more values goes above pDIF=3, so the cap function interferes, putting those values back at pDIF=3+randomizer, hence yu see thse freqs above 3 barely slightly higher than those below when cRatio just passed above 1,65; but then yu starting to see them really noticeable when cRatio goes above 1,8ish+, that's proof of the effect of the cap function.
    No, I mean this:

    http://img692.imageshack.us/img692/4...t20cratiou.png

    This is frequency of damage values for normal hits at 2.0 cRatio. Base damage is 61, so central point is 122 damage.

    (Check post #58 in this thread for more details, and post #12 in Rae's thread for more graphs.)

  5. #65
    Custom Title
    Join Date
    Nov 2008
    Posts
    1,066
    BG Level
    6
    FFXI Server
    Diabolos

    Quote Originally Posted by Motenten View Post
    Max crit damage from my d61 test was 192. We can thus verify that, assuming calculations are done in /1024 units, the secondary multiplier range has to be 0-51, not 0-50.

    50/1024 = 0.048828125
    3 * (1 + 0.048828125) = 3.146484375
    3.146484375 * 61 = 191.935546875, floored to 191

    51/1024 = 0.0498046875
    3 * (1 + 0.0498046875) = 3.1494140625
    3.1494140625 * 61 = 192.1142578125, floored to 192
    This can also be interpreted that your /1024 complication isn't necessary here, and it's just 5%. Rena hitting a perfect 3.15 hints to that as well.

    I still think it's a huge red herring, but that's for you to decide.

  6. #66
    Chram
    Join Date
    Sep 2007
    Posts
    2,526
    BG Level
    7
    FFXI Server
    Fenrir

    Good point. It's almost certainly not a /1024 unit, then.

    It's mainly an issue with trying to determine the random range, though. 50/1000, say, gives you 50 possible increments off the base value. 21/20 doesn't give you much to work with. This assumes we're still dealing with integer math, since there's no evidence that anything in game deals with floating point math.

  7. #67
    Chram
    Join Date
    Sep 2007
    Posts
    2,526
    BG Level
    7
    FFXI Server
    Fenrir

    Just recording a bit of info dealing with some math I'm going through right now, on the ratio of total damage resets out of all results from the lvl 82 Greater Colibri parse (warp cudgels).


    Code:
    Motenten
      Melee
             17:   14
             18:   26
             19:   22
             20:   16
             21:   18
             22:   25
     ^       23:   79
    +        24:   81
             25:   14
             26:   21
             27:   17
             28:   17
             29:   14
             30:   14

    avg below 1.0 (except d17): 21.4
    Excess at 23/24: 118
    Total below 1.0: 121
    Fraction reset: 118 / (118+121) = 49.4%

    cRatio: 1.03
    min pDif: 0.75
    If that covers ~50% of generated pDifs, lowest min pDif before resets should approx. equal 1.03 - 0.75 = 0.28; so, 0.75 - 0.28 = 0.47
    Effective total subtraction: 1.03 - 0.47 = 0.56

    min pDif offset using 152/752 equation:

    1.03 * 152/1024 - 752/1024 = -0.5815


    This assumes that the upper half and lower half of the damage ranges are calculated separately. All excess results at ~1.0 pDif come from the lower half exceeding the limit of ~0.75 and being reset to 1.0.

    This implies damage should fall below 1.0 at about 1.28 rather than the assumed 1.25 (guesstimating 1 + 288/1024, or 1.28125). Masa's data has data points at 1.281 and 1.249, with damage falling below 1.0 in the 1.249 sample set. There's no conclusive evidence that it can't fall below 1.0 at a slightly higher cRatio, though.

  8. #68
    Chram
    Join Date
    Sep 2007
    Posts
    2,526
    BG Level
    7
    FFXI Server
    Fenrir

    410 att vs greater colibri

    cRatio:
    Lvl 81: 1.27329
    Lvl 82: 1.25382


    Want to find out if it's possible to get a damage value of less than 1.0 at either of those cRatios.

    Setup: 99 thf/dnc, no spellcast, no gear swaps

    300 skill in club

    warp cudgel/warp cudgel/raider boom//
    AF3/Agasaya/Brutal/Aesir
    AF3/AF3/Dark/Epona
    Atheling/Twilight/AF3/Skadi

    Total attack: 410
    Str: 90+12 = 102
    Max fStr: 9, reached at 99 str; capped fStr

    Total base damage: 15+9 = 24

    Test if damage below 24 is ever seen. If it -is- possible, it should not be terribly uncommon (one in a few dozen to one in a few hundred).


    Results:

    1042 hits, 300 crits, so 742 non-crits. Minimum damage: 24.

    Appears that 1.25 is likely the limit on cRatio for when minimum pDif can start dropping below 1.0.


    Minor aside: 11 TH procs in 1042 hits, putting proc rate without SATA at about 1%. Had to fix parsing of the TH message, since it changed since it was first introduced.


    Am concerned about the probability distribution aspects of the 1.05 multiplier after the apparent floored primary damage amount.

    Lvl 81 birds:
    24 dmg: 88
    25 dmg: 108
    26 dmg: 19

    Lvl 82 birds:
    24 dmg: 56
    25 dmg: 57
    26 dmg: 12

    If floored at 1.0, the secondary spread should give a range between 24.0 and 25.2, or only about 1/6 of all values should fall on 25, with the vast majority on 24. Instead they're about even, or even favoring 25 damage in the case of the lvl 81 birds.

    Not sure what to make of this yet.

  9. #69
    Chram
    Join Date
    Sep 2007
    Posts
    2,526
    BG Level
    7
    FFXI Server
    Fenrir

    Progressing on the idea that there's only a single set of equations for all Ratio values, whether normal or crit hits, I did some new sets of graphs.

    Plotted all of my and Masa's data (108 total combinations of attack, defense and crit values, for both 1H and 2H weapons) against wRatio. wRatio (working Ratio) is equal to cRatio for normal hits, and equal to cRatio + 1 for crits. Therefore all crit data is plotted as if it were on the same base as normal hits, rather than having a separate set of lines for them.



    As you can see, it fits together perfectly. Along with the limits I've been seeing in the calculation estimates, I'm convinced that there's only two sets of equations (one for above wRatio and one for below wRatio), and not separate equations for crits vs non-crits, or 1H vs 2H.

    I'm refining my model now to build a complete description in as simple a set of equations as I can. At the moment it fits extremely well for 1.25 wRatio and higher, but fails a bit for values below 1.25.

  10. #70
    Chram
    Join Date
    Sep 2007
    Posts
    2,526
    BG Level
    7
    FFXI Server
    Fenrir

    Notes for changes to my calculations. Posting for reference, but you probably won't care about the details.

    Adjustments:

    Original:
    Max upper pDif limit = wRatio * (1 + 240/1024)

    Found sample where 240/1024 is insufficient.

    BD: 97
    Att: 337
    Def: 235
    cRatio = 1.4340
    Max damage: 180
    Max damage without 1.05: 172
    pDif required for 172 damage: 1.7732

    Multiplier required to reach 1.7732: 1.7732 / 1.4340 = 1.2366

    .2366 = at least 243/1024

    Cross-checking, found several other failure points at 240/1024. It's a good match for almost everything from 1.4 on upwards, but clearly isn't fully correct.

    250/1024 is a good fit for everything at 1.2 wRatio or higher, and even 256/1024 works. However there appears to be a minimum cap of about 0.3 (300/1024 is too low; 304/1024 would work).

    Apparent formula:

    wRatio * 0.25, minimum of 0.3, maximum of 0.375




    Minimum lower limit:

    The required difference between wRatio and minimum output pDif for wRatios below 1.25 has to be -at least- 0.2632 (270/1024). I had left it uncorrected at the 0.25 difference implied by the test which showed that min pDif didn't seem to drop below 1 at 1.26 or 1.27 cRatios.

    If the min limit is 272/1024 (34/128), that's 0.265625. If that were the case, the level 81 birds on my test still wouldn't have dropped below 1.0, though the lvl 82 birds should have still had a chance to, though with only about a 60% chance of showing up.

    It's difficult to tell given the limited data points at the low end range, but it appears that the minimum damage limit still keeps the 152/1024 slope of its higher counterpart, just not offset as much. If that's so.... rather than a hard cap on the difference between wRatio and minimum damage, it may be another equation:

    1.25 * (1 + 152/1024) - x/1024 = 1
    x = 446
    Going to use 448

    So the lower limit on damage is the lesser of:

    1 - wRatio
    and
    wRatio * 152/1024 - 448/1024

    And that fits the data pretty well.

  11. #71
    Chram
    Join Date
    Sep 2007
    Posts
    2,526
    BG Level
    7
    FFXI Server
    Fenrir

    My current model (full description):

    Spoiler: show

    Abbreviations:
    BD = base damage
    HPL = high pDif limit (highest possible pDif)
    LPL = low pDif limit (lowest possible pDif)
    HPR = high pDif range (from cRatio to HPL)
    LPR = low pDif range (from cRatio to LPL)

    Standard stuff:

    Ratio = Att/Def
    Ratio is capped at [0 .. 2.0] for 1H and H2H weapons, and [0 .. 2.25] for 2H weapons.

    LC = Level Correction = Mob level - player level (minimum of 0) * 0.05
    cRatio = Ratio - LC


    Algorithm:

    Code:
    wRatio = working Ratio
    
    Check crit rate.
    
    If crit:
        wRatio = cRatio + 1
    else
        wRatio = cRatio
    endif
    
    
    Hi/Low pDif range check (HLR)
    
    If High:
        Basic Limit = wRatio * 0.25
        Basic limit cannot be greater than 0.375 or less than 0.3
        Output limit (not defined for low wRatio values, yet)
        Random value (pDif) is generated between 0 and the basic limit.
        If pDif is greater than the Output limit, set final pDif to 1.0
        Otherwise add pDif to wRatio to get final pDif.
    else if Low:
        Initial limit = wRatio * 152/1024 - 752/1024
        Initial limit cannot be greater than (closer to 0 or positive) -384/1024 (-0.375)
        Output limit = 1 - wRatio
        Output limit cannot be greater than (closer to 0 or positive) wRatio * 152/1024 - 448/1024
        Random value (pDif) is generated between 0 and the initial limit.
        If pDif is less than the output limit, set final pDif to 1.0
        Otherwise add pDif to wRatio to get final pDif.
    endif
    
    Primary damage = BD * final pDif, floored.
    
    Secondary randomizer = random(0 .. 0.05) (possibly 0..50 out of 1000)
    Multiply the primary damage by the secondary randomizer, floor the result, and add to the primary damage.





    Critical parts simplified and written in more mathematical/excel terms:

    Spoiler: show

    Code:
    If High:
        Initial Limit = MIN(MAX(wRatio * 0.25, 0.3), 0.375)
        Output limit (undefined)
        Random value (pDif) is generated between 0 and the initial limit.
        pDif = Rand(0 .. Initial Limit) + wRatio
        If pDif > Output Limit, pDif = 1.0
    else if Low:
        Initial limit = Min(wRatio * 152/1024 - 752/1024, -0.375)
        Output limit = Min(1 - wRatio, wRatio * 152/1024 - 448/1024) + wRatio
        pDif = Rand(0 .. Initial Limit) + wRatio
        If pDif < Output Limit, pDif = 1.0
    endif





    Equations used in the excel spreadsheet to generate the Min Calc and Max Calc lines:

    Spoiler: show

    Min Calc:

    A = wRatio + MIN(wRatio*(152/1024) - (752/1024), -0.375)
    B = wRatio + MIN(1-wRatio, wRatio*(152/1024) - (448/1024))
    Min Calc = MAX(A, B, 0)

    Max Calc:

    A = wRatio + MAX(MIN(wRatio * 0.25, 0.375), 0.3)
    B = undefined
    Max Calc = MIN(A, 3.0)



    Graph showing how the above equations match the observed data. Calculated predictions for each cRatio are given orange lines, with the max pDif having cyan markers and the min pDif having blue markers (may be a bit difficult to see). These are generated with the 5 spreadsheet formulas in the above spoiler.

    I do not yet have a proper definition to generate the 1.0 cap of the max pDif for cRatios below 1.0.


  12. #72
    Masamune
    Guest

    Superb Mot^^ Finally someone going same direction as me ^^

    But there are 2 things i don't understand :
    - When i asked you if your previous studies were more suggesting toward saying crits and normal pDIF had same range, you answered they definitely different due to different slopes... but here you now writing both crits and normal use same HPR and LPR ???
    Kinda contradicting the answer you gave me in previous post isnot it ?
    EDIT: so the RANGE = wRatio +/- 0.375 ?
    - 2 floorings ? Is it possible to generate a distribution showing "holes" (missing numbers) from a formula which 1st floored part generates only integers ?
    (refering to that parse with THFknife piercing bonus showing missing numbers ending with "4" and "7")

    Great idea to put both crits and normal pdif in same graph, much easier to pinpoint the RANGE's equation ^^ (Did you check my PM?)

    EDIT: check PM also for a possible answer to:
    Quote Originally Posted by Motenten
    I do not yet have a proper definition to generate the 1.0 cap of the max pDif for cRatios below 1.0.

  13. #73
    BG Content
    Join Date
    Jul 2007
    Posts
    21,105
    BG Level
    10
    FFXI Server
    Lakshmi
    Blog Entries
    1

    The plateau would be a natural outgrowth of Motenten's formula, I think.

    I have still been unsuccessful finding a Raphael's Rod. Is a Warp Cudgel good enough for the low pDIFs? I thought that low base damage + low multiplier would result in very low resolution relative to what we want.

  14. #74
    Masamune
    Guest

    Yea best to use highest possible basedmg weapon to get best resolution, but will have to parse longer since more dmg values will be generated. You have an idea to parse @ LowRatios ?
    (Personnally im leaning toward Bluffalos Abyss-Uleg, they r pld and seems to have pretty high def and no "screwing TPmoves", but i'm getting troubles finding a way to get their levels "on the fly")
    EDIT: i see on BGwiki those Bluffalo's levels caps @ 100, any proof doesnot go higher ? if yes, then would be easy: i d just have to target all the T ones since i'm lvl99.

    For Motenten:
    I think i understood your reasoning for RANGE: you first calculate both crits and normal pdif range as if they have same range, then if it is crits you apply some capping conditionals ?

  15. #75
    Chram
    Join Date
    Sep 2007
    Posts
    2,526
    BG Level
    7
    FFXI Server
    Fenrir

    Quote Originally Posted by Masamune
    - When i asked you if your previous studies were more suggesting toward saying crits and normal pDIF had same range, you answered they definitely different due to different slopes... but here you now writing both crits and normal use same HPR and LPR ???
    Kinda contradicting the answer you gave me in previous post isnot it ?
    First, how I arrived at the conclusion:

    crit pDif range min and max have constant value HPR/LPR values. Normal pDif range min and max have sloped values.

    However I already know that normal max pDif has a cap of 0.375 (this shows up around 1.6 cRatio). I had not considered it to be the same formula before because I hadn't worked out that max crit pDif was also 0.375. It was the fact that they were the same that led me to the second half of the observation.

    Min crit pDif is constant at -0.375 for a large chunk of the observed data. Min normal pDif is sloped. However min normal LPR size is always larger than 0.375, but is constantly decreasing. It makes sense to consider that it -also- has a cap of -0.375, which then eventually shows up when wRatio moves into the range of the crits we've been looking at.

    Essentially, LPR has a 'minimum safe distance' of 0.375, while HPR has a 'maximum safe distance' of 0.375. LPR reaches 0.375 (min pDif of -0.375) at about 2.42 wRatio.


    As for contradicting my previous post, no it does not. Because of the confused way that you worded your post, I guessed that you were asking if max crit pDif = (max pDif of cRatio + 1), which it does not. What I've asserted with this model is that max crit pDif = max pDif of (cRatio + 1), which is a different thing entirely. Same for the minimums.


    Quote Originally Posted by Masamune
    EDIT: so the RANGE = wRatio +/- 0.375 ?
    Only for certain values of wRatio. The above only holds above 2.42 wRatio (when min pDif is capped at -0.375), though you can also say (depending on your exact definition of RANGE, which you didn't specify) that it also only holds for up to 2.625 (when max pDif is capped at 3.0).


    Quote Originally Posted by Masamune
    - 2 floorings ? Is it possible to generate a distribution showing "holes" (missing numbers) from a formula which 1st floored part generates only integers ?
    (refering to that parse with THFknife piercing bonus showing missing numbers ending with "4" and "7")
    If you mean that the final output value of certain numbers don't show up at all, I don't think so. The second multiplier isn't a flat addition like the 25% piercing damage bonus, or 14% crit damage bonus or whatever. It's an entire random range itself, between 1.00 and 1.05. As such, since every original value was there before the first flooring, every value must also be there after the second multiplier.

    However if you mean that certain numbers in the final output have extremely low frequency, maybe. I don't have a means (though I suppose I could write something) of generating sample distribution handy, so I haven't looked into it myself, yet.


    Quote Originally Posted by Masamune
    (Did you check my PM?)
    Yes, but it's enough of a mess that I just don't know how to respond to it yet.

    Quote Originally Posted by Masamune
    I think i understood your reasoning for RANGE: you first calculate both crits and normal pdif range as if they have same range, then if it is crits you apply some capping conditionals ?
    First part: maybe (I'm not sure you mean what I think you mean; please define 'range', since it can apply to several different parts of the formulas)
    Second part: No. The -only- thing a crit does is add 1 to cRatio (which becomes wRatio). Everything else is based on a value relative to wRatio. The caps are inherent in the formulas themselves; otherwise the min and max ranges would get too close to or too far away from wRatio.


    Quote Originally Posted by Masamune
    EDIT: i see on BGwiki those Bluffalo's levels caps @ 100, any proof doesnot go higher ? if yes, then would be easy: i d just have to target all the T ones since i'm lvl99.
    Well, it's known that mobs in Visions zones (La Theine, Konschtat and Tahrongi) cap at level 90, and that mobs in Scars zones (Misareaux, Vunkerl and Attohwa) cap at level 95. It makes sense to assume that mobs in Heroes zones (Altepa, Uleguerand and Grauberg) cap at level 100.

  16. #76
    Masamune
    Guest

    Ok sorry if my wordings didnot sound clear, here some clarifications what i meant:

    In terms of building a randomized step as defined on wikipedia.org (Y = START + INT(RANGE * Generator)), i've worded "range" as simply as width between max and min parsed values, ie the number of generated values between max and min. I'm not thinking at all, at this point, about wRatio lines.

    Then i tried to reproduce the "behavior" of frequencies as shown in parses (Note there i'm still not looking at particular values yet, except for example cRatio=1 must yields DMG=BaseDMG with a spike litterally centered within the distrib). I did this with what wiki calls "Generator".

    Once this done, i'm trying to find/combine my approach from frequencies study with your observations on particular numbers. That i hope to do it within what wiki calls "RANGE". So not surprising i didnot specify anything since it's yet to be determined XD

    Now, about my question the floorings: check the triple parses with THFknife Attack343, the sample size is enough to rule out the arguement "missing numbers ending with 4or9 must be superlow freq" and the regularity of those holes also, it's clearly an artifact from the term * (1+12.5%) of piercing bonus (AND unfloored base value in my opinion). Take for example the parse on Lcoli65: missing numbers 49 54 59 64 69 ... 79, while parsed all single other value within the range.
    So if we assume there are 3 floorings ie DMG= Floor(Floor(Floor(OriginalDMG)*(1+5%*2ndaryRand))* (1+12.5%)), that means those holes can only be generated if the original function before the 1st floor() has also holes.
    That could be possible to implement but honestly it's much easier to simply assume there is only one single floor() ie the last one. That's why i brought up this when thinking about fine tuning your observations.

    Regarding the explantions i gave yu in PM, i discovered a mistake: the base function generates semi-correctly the different frequency spikes but their width arenot varying with the 2ndary randomizer, which they should. So i'm reworking the conditionals, but the general graphically reasoning stays the same.

    Thanks for the Bluffalos answer, i'll take some time to get their stats assuming EM and T ones = 2 levels range (resp. 99 and 100). I need to reparse at cRatios=1.5, 1.25, 1, and 0.75, to better see the proportion between the range of normal and crit PDIFs, currently all parses have way unsufficient sample size for crits so can't compare their range with the range of normal hits.

  17. #77
    Chram
    Join Date
    Sep 2007
    Posts
    2,526
    BG Level
    7
    FFXI Server
    Fenrir

    Quote Originally Posted by Masamune
    In terms of building a randomized step as defined on wikipedia.org (Y = START + INT(RANGE * Generator))
    Aside: I've actually not been able to find what page you got that formula from. Can you please provide the article link?

    The main problem (from which many other problems derive) is that you're assuming you can create a custom Generator function that will give shape to all of the observed output, whereas the intrinsic understanding of that function (why it's written that way on the wiki in the first place) is that Generator is an abstraction/placeholder for the computer's Rand() function. In virtually all cases, Generator will output one of two things: a flat, even distribution of values between 0 and 1, or a statistical "bell curve" distribution of values between either 0 and 1 or -1 and +1. Even then, there are almost no general cases of the latter; the default assumption is -always- a flat, evenly distributed randomization, and the only question is whether it's a "true" random or a "pseudo" random (because it's difficult for computers to generate "true" random numbers).

    The reason it uses RANGE * Generator is that that formula can generate can any sequence of evenly distributed numbers within that range, since the values that Generator creates are between 0 and 1 (greater than or equal to 0, less than 1). Multiply Rand() by 50 and you get random values between 0 and 49; multiply Rand() by 87 and you get random numbers between 0 and 86; etc, etc. You can add the Start value to that if you want to offset the result. For example, 100 + 50 * Rand() generates values between 100 and 149 instead of 0 and 49.

    All that is doing is giving you the basic formula for how to make a simple, evenly and randomly distributed set of numbers within a specific range of values. It's such a basic and low-level tool that I don't even touch on it in my model; it's assumed that if you're dealing with this sort of math you understand such a fundamental concept, and it's everything that you build *on top* of that that matters.


    So, the difficulty in responding to your PM is that you're not even working in the same problem space that I am.


    Quote Originally Posted by Masamune
    i've worded "range" as simply as width between max and min parsed values, ie the number of generated values between max and min. I'm not thinking at all, at this point, about wRatio lines.
    I should note that I'm not considering "range" in the same way. For me, the distance between wRatio and max, and the distance between wRatio and min, are two separate entities. While they can be combined to give a total min-to-max range, there are peculiarities in the output that I want to examine in a more detailed fashion, and that requires that they be kept separate. It's also easier to generate the 1.0 pDif spikes if they're kept separate.


    Quote Originally Posted by Masamune
    it's clearly an artifact from the term * (1+12.5%) of piercing bonus
    (1 + 25%), actually, but yes.

    Quote Originally Posted by Masamune
    (AND unfloored base value in my opinion)
    This, on the other hand, no. Simple example:

    Code:
    Base value (floored)    Piercing bonus dmg
    40                             50.00 => 50
    41                             51.25 => 51
    42                             52.50 => 52
    43                             53.75 => 53
    44                             55.00 => 55 *
    45                             56.25 => 56
    46                             57.50 => 57
    47                             58.75 => 58
    48                             60.00 => 60 *
    49                             61.25 => 61
    50                             62.50 => 62
    Here you can clearly see that final damage values 54 and 59 were skipped. Now do the same thing without flooring the base value (say between 43 and 44)

    Code:
    Base value (unfloored)  Piercing bonus dmg
    43.0                          53.750 => 53
    43.1                          53.875 => 53
    43.2                          54.000 => 54
    43.3                          54.125 => 54
    43.4                          54.250 => 54
    43.5                          54.375 => 54
    43.6                          54.500 => 54
    43.7                          54.625 => 54
    43.8                          54.750 => 54
    43.9                          54.875 => 54
    44.0                          55.000 => 55
    Here you can clearly see that if the damage before applying the piercing bonus was not floored then we would see 54 damage results in the output. Since we do not, clearly we cannot be dealing with unfloored damage values before this step.

    Quote Originally Posted by Masamune
    that means those holes can only be generated if the original function before the 1st floor() has also a hole.
    No, it does not.

    Quote Originally Posted by Masamune
    That could be possible to implement but honestly it's much easier to simply assume there is only one single floor() ie the last one.
    No. It's simplest to assume that it's floored in 3 separate stages. The number of tricks that would ne necessary to generate an output that would leave holes only after the final flooring step while not flooring anything prior to that is staggering, and makes no sense whatsoever.

  18. #78
    Chram
    Join Date
    Sep 2007
    Posts
    2,526
    BG Level
    7
    FFXI Server
    Fenrir

    Quote Originally Posted by Byrthnoth View Post
    The plateau would be a natural outgrowth of Motenten's formula, I think.

    I have still been unsuccessful finding a Raphael's Rod. Is a Warp Cudgel good enough for the low pDIFs? I thought that low base damage + low multiplier would result in very low resolution relative to what we want.
    I think as long as you have a sufficient number of cRatio/wRatio values it should work. A small handful of set points would be difficult to pin down, but a dozen or more would be far easier.

  19. #79
    Custom Title
    Join Date
    Nov 2008
    Posts
    1,066
    BG Level
    6
    FFXI Server
    Diabolos

    Remember: It's much easier in actual programming of the game for that plateau to be caused by a separate function than for it to be any explicit part of pDif randomization. The 'set to 1.0 below 1.0' and 'add 0.25 below 0.75' is a bitch to model mathematically, but comes out easily in programming language.

    Trying to cram every artifact in mathematically when in reality it's probably two lines of code (one for a good coder, but this is SE) after the main calculation/randomization is just going to cause problems. Need to be looking at programming a simulation in Python or Matlab that can handle such relatively simple conditionals.

  20. #80
    Masamune
    Guest

    Ok for the floorings examples i thought your last example would actually help pindown possibilities (like saying only 1 "43.x" can generate 54 after piercing bonus), but well indeed there is a risk to make things more difficult ...

    Yes i were searching for that PseudoRandomGenerator on wiki but it's actually from a french pdf speaking about statistical discrete math. The basics is exactly like you explained and sound like completely different approach but...

    Since i guessed a bit how you work from our work together last year on that topic, i was pretty sure you would skip/avoid the frequencies study (except the "imbalance" thingy within a given cRatio range), pretty much like CDF and Raellia also, assuming that getting a close approximation of the min and max for normal and crit pdifs should be enough.
    Fair enough, np ... except one problem i discovered just before dropping those studies: those frequency spikes are actually what skew/control all the PDIF averages, especially at caps and plateaux, which is the main thing everyone need (alongwith mob's stats)!

    Sure could always implement like 5 different pieces of functions replicating each parts of cRatio with all their corresponding freq spikes, but honestly, as a dev yourself, does that make sense compared to a single unique function generating everything ?

    That's why i went into that, hoping i could then share here my findings on freq study so can later COMBINE your thorough observations posted here, and a valid freq model. So yea i tried to explain simply with each reasoning step, hoping that would help you in some directions. Apparently, that's the case given last posts where you start to think about a unique function for both crits and normal pdifs, as a "translation" like Rena mentioned earlier in this thread.

    Now this is getting to the point with :
    Quote Originally Posted by Motenten
    I should note that I'm not considering "range" in the same way. For me, the distance between wRatio and max, and the distance between wRatio and min, are two separate entities. While they can be combined to give a total min-to-max range, there are peculiarities in the output that I want to examine in a more detailed fashion, and that requires that they be kept separate. It's also easier to generate the 1.0 pDif spikes if they're kept separate.
    That "imbalance" effect you noted is indeed a signature, but i think it's provoked from something else within the function so i left that for the end, when other main signatures are reproduced.
    While putting my nose again into my freq study, i had to came back to the original function i built "on top" of the basic formula you described above, which is composed of 2 separate conditionals within the "generator". These allow to generate and position a spike within a random distribution whose range is known. I didnot put it in the PM to simplify the explanation but here it is :

    DMG = Floor((START + Floor(RANGE * Generator)) * (1+RAND()*5%))
    START: let's be simple lol = BaseDMG
    RANGE = to be determined at the end with your observations here, and yes i'm aware you consider it actually as HPR+LPR.
    Generator = IF(MIN+RAND1>0;0;MIN+RAND1) + IF(MAX+RAND1<0;0;MAX+RAND1)
    RAND1 = RAND()+IF(RAND()<CritRate;CritCoef;0)
    RAND() is the basic excel randomizer, uniformly generating within [0;1[
    MIN = a*cRatio+b; MAX = c*cRatio+d; see below.
    CritCoef is what separates crits from normal, will be finetuned later like RANGE...

    Put that generating 5k values and plot the freqs for a given cRatio, then manually play different cRatio to see the graphic showing a huge freq spike at exactly DMG = BaseDMG.
    That spike's width is also controlled by 2ndary randomizer: if 0% it boost the freq of a single value (BaseDMG here), but at 5% it boosts 3 values (BaseDMG and also BaseDMG+1 and BaseDMG+2), conform to signatures.
    That spike appears only if cRatio=pdif is within the range of generated values, we'll see below with MIN and MAX.

    At this point, which parameter to start determination for? There i don't remember how i ended up to this, but i started with this observation: freq spike at cRatio=1 must be centered. That's where i chose the coefs a b c d to obtain:
    MIN=MAX= cRatio-1.5

    So i simplified into Generator=cRatio-1.5, from there the reasoning is already in the PM but... i discovered that simplification actually "broke" the observation italicized above.

    So i'm now trying to re-work MIN and MAX 's coefs and i'm getting already tons of "HPR/LPR imbalances" just with this formulation. Just need time to get proper simple coefs...

    I'll stop there, don't want to pollute your topic while actually the only common problem to solve from our approaches is RANGE (or HPR+LPR in your case).

    I'm not sure to understand your explanations about HPR and LPR, i just wanted to know if they are functions of cRatio or just constants...

    P.S. if you need more explanations/formulas, i can send you my Excel files.

+ Reply to Thread
Page 4 of 9 FirstFirst ... 2 3 4 5 6 ... LastLast