 |
| Welcome to Elitist Jerks |
We're testing some new features on the site regarding OpenID registration and coordination with gamerDNA. If you experience any issues with registering an account, please take the time to fill out a report and send it to this e-mail address. We would appreciate any assistance you could provide in making sure everything is functioning as intended. Thanks!
If this is your first visit, please be sure to check out the FAQ and the forum rules. Users must register to post and new registrations are subject to a one day "mute" period to get acquainted with the community.
|
06/01/07, 11:06 PM
|
#1
|
|
Don Flamenco
Undead Warlock
Shadowmoon
|
Uptime
I am looking for some generic equations to plug numbers into for trinkets and procs with and without internal cooldowns. Basically I want to get the average spell damage values for a couple of procs like Spellstrike 2pc, Voidheart 2pc, and the upcoming Scale of the Sands exalted ring. Of course the applications can extend beyond these three procs.
I believe there are only two equations for these type of procs (that don't involve haste), since casts/second is relatively static. One equation describes uptime for a proc with no cooldown, and takes into account overlaps. The other equation describes uptime for a proc with an internal cooldown, and takes into account the hard set gap between procs. I've looked through a couple of threads but since I stopped keeping up with rogue/hunter/warrior mechanics I've fallen a bit behind on the math.
Edit
Procs with no cooldown
Uptime = 1-(1-P)^(D/S)
Where P is the probability of the proc going off, D/S is the number of casts you'd get over the duration of a proc.
Procs with cooldown (this only works if H > D, which is almost always the case)
Uptime = D/(H+(S/P))
Where P is the probability of the proc going off, D is the duration of the proc, S how often you cast, and H is the hidden cooldown.
Last edited by Demi9OD : 06/21/07 at 1:45 PM.
|
|
|
|
|
|
06/02/07, 9:13 AM
|
#2
|
|
Von Kaiser
Tauren Shaman
Stonemaul (EU)
|
The former (procs with no cooldown) is quite simple and elegant:
Uptime = 1-(1-P)^(C/D)
Where P is the probability of the proc going off, C/D is the number of casts you'd get over the duration of a proc.
For ones with internal cooldowns, I'm not so sure of an elegant way to do it. I'm sure there is one, but like you I haven't been looking at the appropriate topics lately so I can't recall having seen one.
|
|
|
|
|
|
06/02/07, 2:10 PM
|
#3
|
|
Great Tiger
|
If you are taking an action every S seconds that has a P chance to proc an effect with a duration of D and a hidden cooldown of H, you can expect 60/(H+(S/P)) procs per minute. If the proc has a duration, the expected uptime of the proc is D/(H+(S/P)).
|
|
|
|
|
|
06/02/07, 6:09 PM
|
#4
|
|
Don Flamenco
Undead Warlock
Shadowmoon
|
Exalted Scale of the Sands ring. Band of the Eternal Sage.
http://www.thottbot.com/s35083
http://www.thottbot.com/s35084
Based on the WoW rep pages, all of these items have been upgraded in stats along with the 2.1 ilvl boosts. While we don't know the stat upgrade, they are pretty easy to guestimate, and it looks like the proc has been upgraded to 15 second duration and 10% chance.
Affliction locks cast about 20 offensive spells a minute. Using the "proc with no cooldown" equation above the proc on this ring looks like it comes out to 39dmg passive. Which is... unbelievably good.
|
|
|
|
|
|
06/04/07, 12:56 AM
|
#5
|
|
Don Flamenco
Night Elf Warrior
Silvermoon (EU)
|
if it can proc from each wave of AM the uptime would with some luck be 100% with 10% proc, 60 "casts" pr minute with AM spam. Sounds juicy, can't wait to get my hands on it.
|
What!?
|
|
|
|
06/04/07, 1:28 PM
|
#6
|
|
Von Kaiser
|
Originally Posted by Drukal
The former (procs with no cooldown) is quite simple and elegant:
Uptime = 1-(1-P)^(C/D)
Where P is the probability of the proc going off, C/D is the number of casts you'd get over the duration of a proc.
|
Calling the exponent C/D [casts/duration] threw me off, surely the number of casts you get over the duration is D/C? 3 seconds per cast over a 15 second proc duration is 5 casts, not 0.2. Ignoring that quibble, how is this formula logically derived?
Last edited by Homercles : 06/04/07 at 1:29 PM.
Reason: DAMN YOU INTERNETS
|
|
|
|
|
|
06/04/07, 1:37 PM
|
#7
|
|
Von Kaiser
Draenei Shaman
Scarlet Crusade
|
Originally Posted by Homercles
Ignoring that quibble, how is this formula logically derived?
|
Essentially, you're determining the likelihood that in X number of casts you don't get a proc. For example, with 3 casts in a given amount of time, with a 25% chance to proc, you have a 75%*75%*75% chance of not proc'ing any of those 3 casts. 1 minus this amount gives you the likelihood that one of those casts wasn't a non-proc.
Clear as mud?
Last edited by Jezele : 06/04/07 at 1:44 PM.
Reason: Grammar
|
|
|
|
|
|
06/04/07, 2:23 PM
|
#8
|
|
Don Flamenco
|
Originally Posted by Jezele
Essentially, you're determining the likelihood that in X number of casts you don't get a proc. For example, with 3 casts in a given amount of time, with a 25% chance to proc, you have a 75%*75%*75% chance of not proc'ing any of those 3 casts. 1 minus this amount gives you the likelihood that one of those casts wasn't a non-proc.
Clear as mud?
|
This explains it, but if you want more info try
http://www.probabilitytheory.info/to...robability.htm
Essentially, it's the method of converse probability; in a nutshell, you calculate the odds of something NOT happening and then subtract that from 1. It's easy with procs, because if you know the chance that it WILL happen for any given shot, you can determine the likelihood of it NOT proccing. Remember, the sum all of probabilities for a closed system is 1, therefore the probability of NOT proccing would be 1-ChanceOfProc. Given that you can calculate the likelihood of independent events by multiplying their individual probabilities together, you get the method Jezele posted (calculate the probability of NOT getting the event by the law of independent events, then realize that ANY other outcome involves AT LEAST 1 proc, therefore subtract the probability of not getting a proc and you have the answer).
|
|
|
|
|
|
06/04/07, 3:24 PM
|
#9
|
|
Von Kaiser
Tauren Shaman
Stonemaul (EU)
|
Originally Posted by Homercles
Calling the exponent C/D [casts/duration] threw me off, surely the number of casts you get over the duration is D/C? 3 seconds per cast over a 15 second proc duration is 5 casts, not 0.2. Ignoring that quibble, how is this formula logically derived?
|
Heh, you're quite right, I forgot to think about how my statement would sound to other people. I had originally written it as a single variable CPD (cast per duration) but thought it looked ugly so changed it to C/D, while still thinking of it as a single variable instead of two seprate ones, which I suppose nobody who wasn't inside my head would have done. Sorry for the confusion there.
|
|
|
|
|
|
06/19/07, 7:40 AM
|
#10
|
|
Piston Honda
Human Priest
Lightbringer
|
I understand the derivation of the "no hidden cooldown" formula, but I don't quite understand the cooldown formula.
If you take an action every S seconds that has a P chance to proc an effect with a duration of D and a hidden cooldown of H, heel said the formula was:
Uptime = D/(H+(S/P))
But if you set H to 0, that gives:
Uptime = D/(S/P)
That's obviously quite different than the "no cooldown" formula of:
Uptime = 1-(1-P)^(D/S)
For example, with P of 10%, S of 3s, D of 15s, and H of 0s, we get:
D/(S/P) = 15/(3/0.1) = 0.5 = 50% uptime
1-(1-P)^(D/S) = 1-(1-0.1)^(15/3) = 1 - 0.9^5= .40951 = 41% uptime
Where does the cooldown formula come from? Is there some reason why it doesn't work for the special case of H = 0? Am I just missing something? 
|
|
|
|
|
|
06/19/07, 9:30 AM
|
#11
|
|
These are not the hammer.
Blood Elf Priest
Mal'Ganis
|
Here's how I did uptime calculations for something with a hidden cooldown:
You can get an "expected time till proc" of a cooled down item using a binomial distribution. The expected time until success in the absence of a cooldown is just (time per cast/proc chance).
Then, just add the cooldown to find the average time between procs. (You might want to account for the edge effects that deal with the probability of the cooldown finishing during a cast.) Divide the duration by the time between casts for uptime.
|
|
|
|
|
|
06/19/07, 11:52 AM
|
#12
|
|
Piston Honda
Human Priest
Lightbringer
|
Hrm... Alright dividing the number of seconds taken per action by the proc chance yields seconds per proc, which is average time between procs...so...
Time between cooldown ending and the next proc = S/P
Time between procs = H + S/P
If there are T seconds between procs, and the proc lasts for D seconds, then uptime is given by... D/T. Expanding, that's just:
Uptime = D/(H + S/P).
Which is what was already posted. :-)
Okay, so as long as H > D, you can ignore the chance of multiple procs during D, which simplifies the probability calculation a lot. But if D > H, then some procs will happen while the proc is up, wasting the remaining duration of the buff, causing a reduction in uptime.
Hmm, seems like if the cooldown was non-zero, but less than the duration, the math would get trickier, no? But since hidden cooldowns usually have H = 3D, I suppose it doesn't matter...
Thanks for the explanation. :-)
|
|
|
|
|
|
06/21/07, 11:04 AM
|
#13
|
|
Piston Honda
Undead Warlock
Doomhammer (EU)
|
Viability of uptime formula depends on relation between effect duration time(D), time between actions that can trigger effect (S) and cooldown time if any (H). There are actually 6 possible relations:
1) H<D<S
2) D<H<S
3) S<D<H
4) D<S<H
5) H<S<D
6) S<H<D
For cases 1&2 (they rarely ever happen , since duration is usually longer than time between two hits), we can use 'simple' formula:
UPtime= D*P/S
For cases 3&4 (they usually happen whenever cooldown is present, since it is usualy longer than both effect time and time between actions) we can use 'cooldown' formula:
UPtime= D/(H+S/P)
For case 5 (it is most often case, since most effects does not have cooldown, but effect time is longer than time between hits) we can use 'overlap' formula:
UPtime= 1- (1-P) ^ (D/S)
For case 6 (not sure if such exist in wow) I dont have formula right now ;p
|
|
|
|
|
|
06/21/07, 2:03 PM
|
#14
|
|
Don Flamenco
|
Although most of this post has already been covered by previous posters (damn yoy CheshireCat!), I feel the need to engage in math discussion. One thing to consider is that hidden cooldown procs can be easily calculated as Poisson Distributions (or binomial distributions, the result works out the same). Essentially, the time (or average number of 'counts' or 'entries') between events is 1/chance. If the chance to find someone who has murdered 10 people is 0.000001%, you'd have to ask 1/0.000001=1E6 people (on average) before finding your killer.
The same method is applied to procs. If a proc is 10% on crit, you have to cast 1/(0.10*crit%) casts to get a proc. You can find time between procs by an analogous method that accounts for rate of attempts (whether it's casts, attacks, w/e). If I cast 1 spell every n seconds, I can do dimensional analysis to determine the time between procs.
[code] 1/[(crits / shot)*(procs / crit)]=1/(procs / shot)
(seconds/shot)*1/(procs/shot)=seconds / proc[code]
So I just need to multiply my 'attempts between proc' number by the time per attempt to get the time between procs. For hidden cooldowns, I know that there is a minimum amount of time I must wait before another proc, so I can just add this to the average time between procs to get the total time between procs. Now that you have the time between buffs (procs), you can easily calculate %uptime.
I should note that this is somewhat of a simplification and only considers the special case in which the hidden cooldown is longer than the duration of the buff. However, because there are no cases in which h!=0 AND the cooldown is shorter than the duration of the buff (of which I know, at least), I'm not going to go through that math. You should just know that the reason you use a different formula for H=0 scenarios is that you are considering a closed set of events - you KNOW how many chances you'll have during the duration of the buff to refresh it, so you can use converse probability to calculate the chance of refreshing the buff.
The Poisson Distribution is only generally useful for finding the 'time' (again, I use time generally as a 'distance' between events) as the number of events approaches infinity. In fact, the limit on the binomial distribution as the number of events approaches infinity IS the Poisson Distribution. The reason we can use either for hidden cooldown procs is that for an open set of chances (or rather, an arbitrarily large set of attempts to get a proc) this is valid; for procs without a hidden cooldown, you have a real number of attempts for a proc, and you can calculate the specific probabilities of getting another proc.
Ugh, that got long winded and messy, and I'm sure I made at least a few errors there. Anyway, hope that helps, and hope someone who's a probability person can fix any mistakes I made (I dabble in probability, but it's not my forte).
|
|
|
|
|
|
06/21/07, 8:11 PM
|
#15
|
|
Piston Honda
Human Priest
Lightbringer
|
Originally Posted by nenad
Viability of uptime formula depends on relation between effect duration time(D), time between actions that can trigger effect (S) and cooldown time if any (H). There are actually 6 possible relations:
1) H<D<S
2) D<H<S
3) S<D<H
4) D<S<H
5) H<S<D
6) S<H<D
For cases 1&2 (they rarely ever happen , since duration is usually longer than time between two hits), we can use 'simple' formula:
UPtime= D*P/S
|
At the risk of derailing the discussion, that's a good description of most on use trinkets such as Essence of the Martyr. S is the time between activations, P is 100%, and D is obvious. 
|
|
|
|
|
|
06/23/07, 10:52 PM
|
#16
|
|
Don Flamenco
|
This may be a mechanics question as much as math but how do you model the uptime of a ppm proc that can proc off of separate events such as dual wielding. I started trying to get my uptime for the thundering skyfire diamond, so using the equation from the OP I get uptime = 6/(40+S/P). But P, the proc rate is dependent on S for each hand.
|
"Information is ammunition."
|
|
|
|
06/23/07, 11:08 PM
|
#17
|
|
Bald Bull
|
Uptime = D/(H+(S1S2(P1+P2))/(P1P2(S1+S2)))
I think that's fully simplified.
|
|
|
|
|
|
06/24/07, 1:10 AM
|
#18
|
|
Don Flamenco
|
Hmm, I must be doing something wrong when I put that into my spreadsheet. What units should S and P be in? If S is how often I cast(swing) then would S be swings/min?
|
"Information is ammunition."
|
|
|
|
06/24/07, 1:23 AM
|
#19
|
|
Bald Bull
|
S is seconds per swing, P is procs per swing.
|
|
|
|
|
|
06/28/07, 6:47 PM
|
#20
|
|
Von Kaiser
Human Priest
Emerald Dream
|
Originally Posted by Demi9OD
Exalted Scale of the Sands ring. Band of the Eternal Sage.
http://www.thottbot.com/s35083
http://www.thottbot.com/s35084
Based on the WoW rep pages, all of these items have been upgraded in stats along with the 2.1 ilvl boosts. While we don't know the stat upgrade, they are pretty easy to guestimate, and it looks like the proc has been upgraded to 15 second duration and 10% chance.
Affliction locks cast about 20 offensive spells a minute. Using the "proc with no cooldown" equation above the proc on this ring looks like it comes out to 39dmg passive. Which is... unbelievably good.
|
What would you do to convert the uptime from a proc to passive damage? I understand how to find the uptime of a proc (say the T4 warlock set bonus), but I'm clueless on how to convert that to passive damage for comparing gear.
|
|
|
|
|
|
06/28/07, 8:03 PM
|
#21
|
|
Don Flamenco
|
Originally Posted by Arveene
What would you do to convert the uptime from a proc to passive damage? I understand how to find the uptime of a proc (say the T4 warlock set bonus), but I'm clueless on how to convert that to passive damage for comparing gear.
|
I imagine you would simply divide the uptime (in seconds over a minute of combat, or ten minutes, or whatever time frame you so choose) by 60x, x representing the number of minutes within the time frame.
Purely theoretical example: Uptime for a 100 ap proc is 100 seconds per 2 minute (120 second) window.
100 seconds/120 seconds = 5/6x(100) or ~ 83.333 ap gained per 2 minute time frame from this proc/trinket/whatever.
Obviously this is a fictitious example, but by simply dividing uptime over a time frame by the time frame, you get the net bonus of the uptime (i.e 100/120 = 83% uptime) which can be multiplied by the proc gain (healing/ap/sp/etc) to find the "passive effect".
Hope I'm not off target with this.
|
|
|
|
|
|
06/28/07, 8:50 PM
|
#22
|
|
Don Flamenco
Undead Warlock
Shadowmoon
|
1-(1-P)^(D/S)
1-(1-.1)^(15/2.5) = 47% uptime.
.47 * 95 = 44.5 passive damage. Assuming 2.5s average cast time.
|
|
|
|
|
|
06/28/07, 9:43 PM
|
#23
|
|
Don Flamenco
|
Originally Posted by Angeron
I imagine you would simply divide the uptime (in seconds over a minute of combat, or ten minutes, or whatever time frame you so choose) by 60x, x representing the number of minutes within the time frame.
Purely theoretical example: Uptime for a 100 ap proc is 100 seconds per 2 minute (120 second) window.
100 seconds/120 seconds = 5/6x(100) or ~ 83.333 ap gained per 2 minute time frame from this proc/trinket/whatever.
Obviously this is a fictitious example, but by simply dividing uptime over a time frame by the time frame, you get the net bonus of the uptime (i.e 100/120 = 83% uptime) which can be multiplied by the proc gain (healing/ap/sp/etc) to find the "passive effect".
Hope I'm not off target with this.
|
That's pretty much spot on. If you use a real world example, bloodlust brooch is up for 20 seconds every 120 seconds (2 min cooldown). It provides 70 AP static and 270 AP on use. The time averaged AP is then 70+270*20/120=115 AP.
Take something that uses PPM. You determine how many times it's up per minute (say 2 ppm) and how long the duration of the buff is (say 8 seconds). 2*8/60 = 0.267% uptime. You then multiply uptime times the buff (say 200 AP). 0.267*200=53.33 AP. See what's going on there? It's just uptime (as a percentage) times buff to get average benefit.
|
|
|
|
|
|
|