Elitist Jerks Proc Mechanics

04/17/08, 3:44 PM   #16
• Vulajin
Vula'jin the Void, blessed by the loa

Mal'Ganis
 Originally Posted by Dontmindme Correct formula should be: U = D / (c + 1/2v + 1/vp) where 1/2v = your average time until your next attack
I don't believe this is necessary because the 1/vp term already incorporates the average likelihood that swings do or not do not occur in the second immediately following the cooldown's expiry.

 Originally Posted by Enervate Yep, still a fucking idiot.

 04/20/08, 5:30 AM #17 Gilmoshar Glass Joe     Aesetha Dwarf Priest   Draenor I confirm the uptime formula as above, using Markov chains and Mathematica. (How dare you retroactively plagiarize my unpublished notes!) Only, as regards the input of Dontmindme, perhaps it's best to use, instead of the product $cv$, simply the number of missed proc opportunities in the internal cooldown? After all, any variance in the internal cooldown between proc opportunities is basically invisible. The difference is basically a floor function somewhere in the denominator. Further, since what matters to the uptime is the number of times an attack sees it, perhaps it's best to modify the duration term as well -- so the number of attacks within the duration. Though that's mostly nitpicking on my part. The formula as appears in my notes is $\frac{np}{mp+1}$ where p is the probability of proccing the buff on any given swing, m is the number of proc opportunities inside the given cooldown, and n is the number of proc opportunities in the duration of the buff. Strictly speaking this is the probability that any given proc opportunity will be made with the buff up, which is what I was gunning for. I'd give my derivation, but you seem to have things pretty well in hand. (And my exposition would suffer for lack of a chalkboard anyways. :P) Further, for completeness, the analogous quantity for a theorized proc with a duration greater than its internal cooldown is $1 - \frac{(1-p)^{n-m}}{mp+1}$
04/21/08, 12:50 AM   #18
Dontmindme
King Hippo

Dwarf Rogue

Icecrown
 Originally Posted by Vulajin I don't believe this is necessary because the 1/vp term already incorporates the average likelihood that swings do or not do not occur in the second immediately following the cooldown's expiry.
Actually it does not. 1/vp is the correct average time until the next proc starting at time 0.

With uneven numbers, there is a gap until the next eligible attack. In essence, the cooldown is not actually 20 seconds but 20 seconds plus the time interval until you have another attack. And actually, looking at my notes, I see an error. It should be -1/2v not +1/2v. As the formula 1/vp is assuming a full interval until the next attack and what you are left with at the end of a cooldown is a partial interval.

In my example I'm representing that time interval as 1/2v which is the average time until another attack. In truth, if all attacks were perfectly clockwork, this factor would be something different (essentially whatever fraction of an attack that does not evenly fit into the cooldown period).

An easy way to test this is a simple example. You flip a coin 1 time per second. What is the average time until you get a heads? This can easily be calculated (and even charted) and the answer is 2 seconds. Now what happens if there is a 1.5 second cooldown until it "counts" a heads? The answer is 3 seconds not 3.5 seconds.

 04/21/08, 10:31 AM #19 Borodin Piston Honda   Borodin Dwarf Warrior   Argent Dawn (EU) Shard of Contempt: 10%, 45 second internal cooldown
04/23/08, 12:52 PM   #20
Gilmoshar
Glass Joe

Dwarf Priest

Draenor
 Originally Posted by Vulajin I don't believe this is necessary because the 1/vp term already incorporates the average likelihood that swings do or not do not occur in the second immediately following the cooldown's expiry.
 Originally Posted by Dontmindme Actually it does not. 1/vp is the correct average time until the next proc starting at time 0.
If I understand you properly, this would be important if the buff expired at a random time, and you needed to factor in the time it takes until the next proc opportunity. But the time at which the buff expires (in the approximation of constant uniform attack speed, which I assume we're considering since that's where our formulae are true) is never random; it's always the duration of the buff modulo the time between attacks. And the proper way to handle this is just to forget about any buff duration between attacks, and count the number of proc opportunities made with the buff up (or with the internal cooldown up).

Again if I understand you properly, the way to proceed consistent with your input would be to basically start over with a new model; either constant nonuniform attack speed (hard and complicated, but better) or with attacks falling randomly subject to certain rules (probably also hard, and I'm not certain it's better.)

(Do we have a derivation for the formula under one of those approximations? If so, can you direct me to it?)

 04/23/08, 3:30 PM #21 • Aldriana Mike Tyson   Aldriana Night Elf Rogue   Doomhammer I think the way that most of us (by which I mean certainly myself, and probably DMM and Vulajin as well) are thinking about it is as follows: After the cooldown completes, you are somewhere between two attacks. If attacks were perfectly periodic, you could figure out exactly where you'd be between two. But, alas, attacks aren't perfectly periodic - not even close. For casting spells they may be somewhat close (modulo the player's ability to cast spells perfectly end-to-end), but for melee attacks, they're really not. Never mind the fact that even straight autoattacking with a single weapon you'll see more variance in the time between consecutive attacks than you might guess, there's also the fact that MH attacks are muddied by SS procs, WF procs, and instant attacks, plus the fact that various haste procs and activated abilities means the spacing between consecutive attacks is anything but constant in the long run. At this point, there are two schools of thought: 1) For attacks that are roughly periodic - OH attacks, and probably spellcasting as well - one assumes they're periodic but that the proc cooldown comes up at a random point in time between two attacks. Thus, the time till first eligible proccing attack is, on average, 1/2v, and then there's another chance to proc every 1/v units of time thereafter. When you total this up, you find that the expected time from end-of-cooldown to first proc is 1/vp-1/2v (which I think is what DMM was going for). This is probably a reasonable approximation of the offhand/chaincasted spell case. 2) For MH attacks, however, it seems to me that attacks are just too irregular for the periodicity assumption to hold - this is why I've defined v the way I have. If things were always (roughly) periodic, it would make more sense to define f = average time between attacks and use that. But, with procs and instant attacks - or procs that affect both hands, such that you have all that plus 2 interweaving roughly periodic attacks - periodicity doesn't really apply. Thus, I operate off expected number of attacks in a given interval of time instead. Thus, when the cooldown is up... the following second is a second like any other, so there are an average of v attacks in that second, and thus a proc occurs with probability 1/pv in the first second, (1-1/pv)*1/pv in the second second, and so on; adding this up gives the expected time till first proc after the cooldown as 1/pv, as per my original equation. Which is the better way of modeling stuff in general? Hard to say. I chose option 2 because it's a simpler expression, and, frankly, the difference between the two is unlikely to be relevant. But as it's still an approximation, I'm not averse to other options if people think they are superior.
 08/01/08, 3:15 PM #22 Bashui Von Kaiser     Bashui Tauren Druid   Thunderhorn http://elitistjerks.com/f31/t16902-f...88/#post836522 I would like some input from some of the people here regarding the comment linked above. The uptime formula referenced says that it is only true for procs with an internal cooldown longer than the proc. In this case, i am trying to model the uptime of mangle, based on hit(miss) chance. Mangle can be used every 6 seconds, has a 12 second duration and can be refreshed. The formula that seems to match the simulation results is U=1-(1-m)*(1-m) where U is uptime and m is total miss chance. I would like to be able to derive the answer, but I was never very good at coming up with proofs. Can anyone help with the derivation, and if my formula is wrong let me know what is wrong with my simulator?  int printSteps=10000000; void Simulation(int hit) {   double uptime=0;   double total=0;   int misses=2;   int steps=printSteps;   srand((unsigned int)time(NULL));   while(true)   {     if(rand()<=hit)     {       misses=0;     }     else     {        misses++;     }     if(misses <2)     {       uptime++;     }     total++;     if(!steps--)     {       printf("\n%f",uptime/total);       steps=printSteps;     }   } } Simulation((int)(.8*RAND_MAX));   The code prints out the average uptime every 10000000 trials, with an 80% chance to hit and converges on (1-.2*.2) or .96 I also did another sim that would exhaustively search through every trial of N attacks and weight the uptime with the probability of that string occuring and it also converged to the same value, though the work done doubles with every attack, so much that looking at every combination of 32 attacks took about 5 minutes!
 08/01/08, 4:39 PM #23 • Aldriana Mike Tyson   Aldriana Night Elf Rogue   Doomhammer 1-(1-m)^2 is correct; it's basically the same argument as for procs with no internal cooldown, because the frequency of application is constant throughout; the reason why internal cooldowns are usually different is because you have one probability for the first c seconds and a different one thereafter. However, that's not what you have here; here, the probability of success on every check is the same, it's just the checks are made somewhat infrequently. The more generalized form of the formula in the first post is this: If you have an effect that is applied, on average, once every t seconds, hits with probability p, and lasts for D seconds, then uptime is given by $1-(1-p)^{\frac{D}{t}}$. In your case, D/t = 2, so you simply get 1-(1-p)^2, as you deduced.
 01/20/09, 3:47 AM #24 landsoul Myrmidon Champion     Landsoul Worgen Warrior   Alterac Mountains Getting some data on Berserking. Ran a test of 1977 connects with a rogue holding a 1.4 dagger. No haste, no increased attack speeds. 34 procs. I know the size of the data is small, but it took over an hour sitting there and counting procs. This data yields anywhere between .65 and .8 PPM. Can anyone else do a larger test? >--Coaching Site--< Private coaching / Warrior Resource >--Stream--< Tues, Wed, 7 Eastern.
02/25/09, 9:30 PM   #25
Dragon-CR
Von Kaiser

Draenei Shaman

Crushridge
Frankly it appears most of the assumed mechanics on Mongoose/Berserking I've seen posted around here are, well, wrong. From what I've seen from several threads the 1.2ppm is assumed to be unaffected by haste. Copied and pasted from my post in the Enh Shammy thread. Somebody please feel free to double check my work, I will be testing more as I have time.

If you want the quick version, from the test I did I'm thinking both Mongoose and Berserking are 1ppm, however they are affected by haste. This was determined over 4 test runs of 1+ hour each (limited by weapon durability)

 I did ~9000 swings on test dummy (that connected), along with another ~1000 WF attacks and had 568 LS procs, with ~4% spell miss (as shown by FT), and none of the LS show as missed or fully resisted. This was on the heroic dummy. Also in this run I had ~49% berserker uptime, and Procodile showed 176 procs and 1.76ppm for dual berserker but that doesn't count refreshes. This run had ~71% flurry uptime as well. I downloaded Proculas and did a second test run on the L60 dummies, and did 9857 attacks on them with no weapon imbues or LS this time. Procodile reported 155 Berserker buffs and 1.72ppm without refreshes, however Proculas reported 303 procs including refreshes for a total of 3.36ppm over 90 minutes. Neither mod shows the uptime for dual berserker buffs unfortunately. This run had ~79% flurry uptime, no weapon imbues, and no special attacks, only WF and SoE totem for max haste and crit. I did a few tests effectively naked wearing just weapons and a few items with the most hit and least crit on them. For this run I pulled [Pride] out of the bank that had mongoose on it to seperate out the mongoose and berserker procs. This run had no imbues, no totems, no specials, and ~41% flurry uptime. I observed a somewhat large gap between mongoose and berserking PPM rates, mongoose with 1.36ppm and berserking with 1.02ppm over 5000 seconds and ~6000 attacks, assuming thats just due to luck with mongoose and bad luck with berserking over a small set they could both still be in the 1.2ppm range, and they both average out there. I had done another test prior to the above test with the wrong Procula version installed which only tracked mongoose and for that run it had mongoose at 1.11ppm with a 1hr test. That doesn't change the fact that the full gear/haste version had ~1.7ppm x2 which is much harder to explain by a 90 minute lucky streak on both weapons, as it's ~41% higher than expected. Total average haste with 4pc T7 and flurry compensated for uptime, WF totem, item haste, and my [Meteorite Whetstone] averaged out with its uptime for the fight was ~67.4%, however if you take WF totem out of the equation then flurry + haste rating is ~39.5% haste. My naked haste including flurry was ~12%. So this testing begs the following questions: Are we sure the ppm for mongoose and berserking is 1.2? From my mostly naked tests it seems in that area but possibly slightly lower. Are we sure haste effects don't affect weapon proc rate? 3.36ppm over 90 minutes with dual berserking seems to fall fairly far outside the probability of a lucky streak. If some haste does affect it, do all haste effects affect it? If so then 41% more procs for 67% more haste was an unlucky streak, if only some effects do, and WF totem isn't one of them, then 39% more more haste matches the observed proc rate. If #1 is right about the lower proc rate, and the proc rate is actually 1ppm, then the 67% haste matches fairly well with 1.7ppm. I know it would have been much better to spec out of flurry to eliminate that factor from the naked tests but I frankly didn't feel like it and I don't think it affected the results too much, esp since I dumped as much crit as I could for those tests. I have fairly extensive screenshots of the above test results if anybody cares to see them, both recount, procodile, and proculas data. If you really want to see them let me know and I can post them. If anybody else cares to repeat these tests I recommend both proc monitoring addons since Procodile shows total uptime and Proculas counts refreshes for a more accurate proc count.
And later...

 More berserker proc rate testing. L60 dummy, 1hr duration, self buffed with SoE, WF, and mana spring totem. 6918 melee attacks, 802 WF attacks, 702 storm strikes, 385 lava lashes. Berserker uptime 54.5%, not a lot higher than auto attack, however the PPM changed considerably. I had 256 procs in 3605 seconds for 4.26ppm over the hour, or 0.9ppm higher than my auto attack test. I also had more haste due to my hyperspeed accelerators and totem of hex. Meteorite Whetstone uptime/ppm seemed about the same, Mirror uptime/ppm was a tiny bit higher. The higher proc rate with the not much higher total uptime means there was a lot more refreshes obviously but I also have a feeling it affected the dual berserking uptime a good bit more than is represented. Unfortunately as I said before the mod doesn't track that. I'd say this test with the other I did leans strongly toward a 1ppm rate on the enchant, however it is affected by haste. I might do the test again sometime with my Pride again and test the overall uptimes for berserker and mongoose over an hour or so. Assuming no server bugs and all SS's and LL's and OH melee attacks gave 1 FT attack, there were 2845 MH attacks and 4073 OH auto attacks. This gives 4809 OH attacks total and 3998 MH attacks. assuming the 1ppm rate I gave above and 2.6MH and 1.4OH that's 4.33% MH chance and 2.33% OH chance. That's 173MH procs and 112OH procs, for a total of 285 theoretical procs. So if my assumtions are right there's still 29 missing procs, but is within ~10% of the value. A number of procs could have been lost to same time procs from insta attacks or WF procs, and the server may have a cache and only send updates every few msec and if say an auto attack and SS both proc one maybe it only sends the one update, not sure there. Assuming the 1.2ppm rate unaffected by haste then over 60 mins with dual berserking you're looking at 144, assuming 1.2ppm for specials is based off of base speed still that's 2.8% chance on OH specials and 5.2% for MH specials. That gives 60 MH procs and 21 OH procs on specials. This puts us off at -31ppm for the assumed 1.2 rate, and also assumes no dual procs that may have only shown as one in the log. being over 10% low with no way to count for the discrepancy doesn't sound right either.

 03/12/09, 12:01 PM #26 • Rezarel Piston Honda     Rezarel Human Warrior   No WoW Account I can confirm that Berserking, Unbridled Wrath, and Furious Attacks do not change proc chance per swing with haste rating or Flurry. I found the 95% confidence interval for Berserking to be 0.967-1.017 PPM. Details on my blog.
 03/18/10, 1:41 PM #27 Mayerling Glass Joe   Mayerling Human Paladin   Medivh Could anyone verify the proc chance on [Libram of Defiance]? Everything I am seeing is pointing to a 50% proc rate. I am comparing this to [Libram of the Eternal Tower] but have not had the emblems to buy it yet and therefore have not been able to test anything. Many thanks. Last edited by Mayerling : 03/18/10 at 1:47 PM.

 Elitist Jerks Proc Mechanics