•

# Uptime

22 replies to this topic

### #1 Demi9OD

Demi9OD

Don Flamenco

• Members
• 377 posts

Posted 02 June 2007 - 02:06 AM

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.

### #2 Drukal

Drukal

Von Kaiser

• Members
• 32 posts

Posted 02 June 2007 - 12:13 PM

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.

### #3 heel

heel

Great Tiger

• Members
• 788 posts

Posted 02 June 2007 - 05:10 PM

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)).

### #4 Demi9OD

Demi9OD

Don Flamenco

• Members
• 377 posts

Posted 02 June 2007 - 09:09 PM

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.

Don Flamenco

• Members
• 385 posts

Posted 04 June 2007 - 03:56 AM

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!?

### #6 Homercles

Homercles

Piston Honda

• Members
• 152 posts

Posted 04 June 2007 - 04:28 PM

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?

### #7 Jezele

Jezele

Piston Honda

• Members
• 112 posts

Posted 04 June 2007 - 04:37 PM

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?

### #8 The Iron Colonel

The Iron Colonel

Don Flamenco

• Members
• 364 posts

Posted 04 June 2007 - 05:23 PM

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?

http://www.probabili...probability.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).

### #9 Drukal

Drukal

Von Kaiser

• Members
• 32 posts

Posted 04 June 2007 - 06:24 PM

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.

### #10 Lazare

Lazare

Piston Honda

• Members
• 198 posts

Posted 19 June 2007 - 10:40 AM

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?

### #11 CheshireCat

CheshireCat

Bald Bull

• Members
• 1990 posts

Posted 19 June 2007 - 12:30 PM

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.

### #12 Lazare

Lazare

Piston Honda

• Members
• 198 posts

Posted 19 June 2007 - 02:52 PM

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. :-)

Piston Honda

• Members
• 141 posts

Posted 21 June 2007 - 02:04 PM

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

### #14 The Iron Colonel

The Iron Colonel

Don Flamenco

• Members
• 364 posts

Posted 21 June 2007 - 05:03 PM

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=auto:0] 1/[(crits / shot)*(procs / crit)]=1/(procs / shot)
(seconds/shot)*1/(procs/shot)=seconds / proc[code=auto:0]
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).

### #15 Lazare

Lazare

Piston Honda

• Members
• 198 posts

Posted 21 June 2007 - 11:11 PM

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.

### #16 Machinator

Machinator

Don Flamenco

• Members
• 498 posts

Posted 24 June 2007 - 01:52 AM

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."

### #17 Shalas

Shalas

Bald Bull

• Members
• 2351 posts

Posted 24 June 2007 - 02:08 AM

Uptime = D/(H+(S1S2(P1+P2))/(P1P2(S1+S2)))

I think that's fully simplified.

### #18 Machinator

Machinator

Don Flamenco

• Members
• 498 posts

Posted 24 June 2007 - 04:10 AM

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."

### #19 Shalas

Shalas

Bald Bull

• Members
• 2351 posts

Posted 24 June 2007 - 04:23 AM

S is seconds per swing, P is procs per swing.

### #20 Arveene

Arveene

Von Kaiser

• Members
• 37 posts

Posted 28 June 2007 - 09:47 PM

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.

#### 0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users