Elitist Jerks
Register
Blogs
Forums


Go Back   Elitist Jerks » Public Discussion » Public Discussion

Reply
 
LinkBack Thread Tools
Old 06/01/07, 10:06 PM   #1
Demi9OD
Don Flamenco
 
Orc 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 12:45 PM.

Offline
Reply With Quote
Old 06/02/07, 8:13 AM   #2
Drukal
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.

Offline
Reply With Quote
Old 06/02/07, 1:10 PM   #3
heel
Great Tiger
 
Dwarf Priest
 
Mannoroth
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)).

Offline
Reply With Quote
Old 06/02/07, 5:09 PM   #4
Demi9OD
Don Flamenco
 
Orc 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.

Offline
Reply With Quote
Old 06/03/07, 11:56 PM   #5
Vhad
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!?

Offline
Reply With Quote
Old 06/04/07, 12:28 PM   #6
Homercles
Piston Honda
 
Homercles's Avatar
 
No Wow Account
Tauren Warrior
 
No WoW Account
Originally Posted by Drukal View Post
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 12:29 PM. Reason: DAMN YOU INTERNETS

Offline
Reply With Quote
Old 06/04/07, 12:37 PM   #7
Jezele
Piston Honda
 
Draenei Shaman
 
Scarlet Crusade
Originally Posted by Homercles View Post
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 12:44 PM. Reason: Grammar

Offline
Reply With Quote
Old 06/04/07, 1:23 PM   #8
The Iron Colonel
Don Flamenco
 
The Iron Colonel's Avatar
 
Dwarf Hunter
 
Mug'thol
Originally Posted by Jezele View Post
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).

Offline
Reply With Quote
Old 06/04/07, 2:24 PM   #9
Drukal
Von Kaiser
 
Tauren Shaman
 
Stonemaul (EU)
Originally Posted by Homercles View Post
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.

Offline
Reply With Quote
Old 06/19/07, 6:40 AM   #10
Lazare
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?

Offline
Reply With Quote
Old 06/19/07, 8:30 AM   #11
CheshireCat
Bald Bull
 
CheshireCat's Avatar
 
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.

United States Offline
Reply With Quote
Old 06/19/07, 10:52 AM   #12
Lazare
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. :-)

Offline
Reply With Quote
Old 06/21/07, 10:04 AM   #13
nenad
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

Offline
Reply With Quote
Old 06/21/07, 1:03 PM   #14
The Iron Colonel
Don Flamenco
 
The Iron Colonel's Avatar
 
Dwarf Hunter
 
Mug'thol
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).

Offline
Reply With Quote
Old 06/21/07, 7:11 PM   #15
Lazare
Piston Honda
 
Human Priest
 
Lightbringer
Originally Posted by nenad View Post
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.

Offline
Reply With Quote
Reply

Go Back   Elitist Jerks » Public Discussion » Public Discussion

Thread Tools

Similar Threads
Thread Thread Starter Forum Replies Last Post
[Paladin] Vengeance Uptime Math Cromfel Class Mechanics 3 06/04/07 7:13 PM