Elitist Jerks Ghost of Chance

Rate this Entry

# Ghost of Chance

Posted 07/30/09 at 4:17 PM by Adoriele
Preface: As mentioned in previous comments, I'd rather dump heavily mathy things here than in the Moonkin threads, because it's easier to keep out of clutter. This post was prompted by comments on determining NG uptime when spamming Wrath. The talk referenced (fuck if I'm going to edit this post because I'm putting it on my blog instead of the thread) is Peter Donnelly shows how stats fool juries | Video on TED.com, with a followup article at Statistics of Coin-Toss Patterns | Skippy Records. As well, since I mentioned it in the thread, I'm attaching a copy of the last version of my spreadsheet that pre-dated WrathCalcs. It attempted to do a probabilistic determination of how many Starfires you could fit into a single Moonfire application, including the effects of NG, to determine DPS using a MF,SFxN rotation. All of the mechanics are completely out of date, but it might be interesting for some looking for more examples of how complex some of this business can be.

Quote:
Originally Posted by Arawethion
This reminds me of something else I've been pondering while working on WC/TTT stuff. We've always been modeling NG uptime as a steady-state average for each type of spell, but of course in reality there are significant edge effects since we change spells so often.

Now, there's a good reason to imagine that the edge terms largely cancel. Wrath has high NG uptime for example. So when you switch to Wrath, the model slightly overestimates your haste for the first two Wraths, until you're into the steady state, but it will correspondingly underestimate your haste for the next two spells you cast after switching away from Wrath. And in the current WC I posted, I extended this rationale to instants--I give Moonfire the same NG uptime as Wrath, and IS I simply treat as having no NG effect since it can't crit. Even though this fudges the time spent casting an individual spell, it should provide a workable estimate of the eventual NG contribution from the spell.

Curious if anyone has ideas for improving on this.
Well, it's somewhat like the medical test example in the video Gormane linked, or alternatively a more complex version of the wrath spam problem. Each spell you cast has a probability of being affected by NG depending on two factors: What spells finished casting in the previous three seconds, and the probability of each of those sequences during a given fight. The first factor is relatively easy to generate (ignoring Latency and possibly Starfall), and hence find the probability that, with that sequence, the cast is affected by NG. The second factor, though, is horrifically hard to determine, and depends largely on how you structure your priority list and whether there's any movement (though this is less of a factor given how short NG is).

As an example, here's what I'd list as the first factor for Moonfire, with the assumption of 400 Haste and raid buffs, 45% crit on all spells that can crit, percentage at the end is probability of NG being up for the MF cast (N = Normal, NG = with NG, E = with Eclipse, I = Instant):

 MF <- IS(N,NG) 1.2s/1s <- <- SF(N,NG) +2.6s/2.2s > 3s 45% <- <- SF(E, E+NG) +2.6s = 3.8s 75% <- <- SF(I,I+NG),W(N,NG) +1.2s/1s = 2.4s/2.2s/2.0s <- <- <- SF(N,NG,I,I+NG),W(N,NG) +2.6/2.2/1.2/1.0 >= 3s 1-(1-45%)^2 = 75% <- <- <- SF(E,E+NG,E+I,E+I+NG) +2.6/2.2/1.2/1.0 >= 3s 1-(1-45%)(1-75%) = 86% <- <- SF(E+I,E+I+NG) +1.2s/1s = 2.4/2.2/2s <- <- <- SF(N,NG,I,I+NG),W(N,NG) +2.6/2.2/1.2/1.0 >= 3s 1-(1-75%)(1-45%) = 86% <- <- <- SF(E,E+NG,E+I,E+I+NG) +2.6/2.2/1.2/1.0 >= 3s 1-(1-75%)^2 = 92% <- SF(I,I+NG),W(N,NG) 1.2s/1s <- <- SF(N,NG) +2.6s/2.2s > 3s 1-(1-45%)^2 = 75% <- <- SF(E, E+NG) +2.6s = 3.8s 1-(1-45%)(1-75%) = 86% <- <- SF(I,I+NG),W(N,NG) +1.2s/1s = 2.4s/2.2s/2.0s <- <- <- SF(N,NG,I,I+NG),W(N,NG) +2.6/2.2/1.2/1.0 >= 3s 1-(1-45%)^3 = 83% <- <- <- SF(E,E+NG,E+I,E+I+NG) +2.6/2.2/1.2/1.0 >= 3s 1-(1-45%)^2(1-75%) = 92% <- <- <- IS(N,NG) +1.2/1s >= 3s 1-(1-45%)^2 = 75% <- <- SF(E+I,E+I+NG) +1.2s/1s = 2.4/2.2/2s <- <- <- SF(N,NG,I,I+NG),W(N,NG) +2.6/2.2/1.2/1.0 >= 3s 1-(1-45%)(1-75%)(1-45%) = 92% <- <- <- SF(E,E+NG,E+I,E+I+NG) +2.6/2.2/1.2/1.0 >= 3s 1-(1-45%)(1-75%)^2 = 97% <- <- <- IS(N,NG) +1.2/1s >= 3s 1-(1-45%)(1-75%) = 86% <- <- IS(N,NG) +1.2/1s = 2.4/2.2/2s <- <- <- SF(N,NG,I,I+NG),W(N,NG) +2.6/2.2/1.2/1.0 >= 3s 1-(1-45%)^2 = 75% <- <- <- SF(E,E+NG,E+I,E+I+NG) +2.6/2.2/1.2/1.0 >= 3s 1-(1-45%)(1-75%) = 86% <- SF(E+I,E+I+NG) 1.2/1s <- <- SF(N,NG) +2.6s/2.2s > 3s 1-(1-75%)(1-45%) = 86% <- <- SF(E, E+NG) +2.6s = 3.8s 1-(1-75%)^2 = 92% <- <- SF(I,I+NG),W(N,NG) +1.2s/1s = 2.4s/2.2s/2.0s <- <- <- SF(N,NG,I,I+NG),W(N,NG) +2.6/2.2/1.2/1.0 >= 3s 1-(1-75%)(1-45%)^2 = 92% <- <- <- SF(E,E+NG,E+I,E+I+NG) +2.6/2.2/1.2/1.0 >= 3s 1-(1-75%)(1-45%)(1-75%) = 97% <- <- <- IS(N,NG) +1.2/1s >= 3s 1-(1-75%)(1-45%) = 86% <- <- SF(E+I,E+I+NG) +1.2s/1s = 2.4/2.2/2s <- <- <- SF(N,NG,I,I+NG),W(N,NG) +2.6/2.2/1.2/1.0 >= 3s 1-(1-75%)^2(1-45%) = 97% <- <- <- SF(E,E+NG,E+I,E+I+NG) +2.6/2.2/1.2/1.0 >= 3s 1-(1-75%)^3 = 98.5% <- <- <- IS(N,NG) +1.2/1s >= 3s 1-(1-75%)^2 = 92% <- <- IS(N,NG) +1.2/1s = 2.4/2.2/2s <- <- <- SF(N,NG,I,I+NG),W(N,NG) +2.6/2.2/1.2/1.0 >= 3s 1-(1-75%)(1-45%) = 86% <- <- <- SF(E,E+NG,E+I,E+I+NG) +2.6/2.2/1.2/1.0 >= 3s 1-(1-45%)(1-75%) = 86% <- SF(N,NG) 2.6/2.2s <- <- SF(N,NG,I,I+NG),W(N,NG) +2.6/2.2/1.2/1s > 3s 1-(1-45%)^2 = 75% <- <- SF(E,E+NG,E+I,E+I+NG) +2.6/2.2/1.2/1s > 3s 1-(1-45%)(1-75%) = 86% <- <- IS(N,NG) +1.2/1s > 3s 45% <- SF(E,E+NG) 2.6/2.2s <- <- SF(N,NG,I,I+NG),W(N,NG) +2.6/2.2/1.2/1s > 3s 1-(1-75%)(1-45%) = 86% <- <- SF(E,E+NG,E+I,E+I+NG) +2.6/2.2/1.2/1s > 3s 1-(1-75%)^2 = 92% <- <- IS(N,NG) +1.2/1s > 3s 75%

This only accounts for possibilities which could follow from a sane priority system - i.e. you're not casting a DoT more than once in under 3s. It's also a lot less complex because we're targeting a DoT. If we'd targeted Wrath instead, we'd have to account for MF in the preceding 3 seconds as well. Note also that I'm grouping cast sequences that have similar cast times and percentages of proccing NG. For example, the line which gives 83% chance of NG is composed of 96 different cast sequences (actually, 288 if you consider Wrath Eclipses, since whether you're casting Wrath has a different probability if Eclipse is up), each with a different probability of occurring during a given encounter (though most of them are unlikely themselves, as 84% of those sequences require at least one 4T8 proc). The cast sequence with the highest probability of NG being active for our targeted cast is also very much the least likely to happen; you'd need to proc 4T8 on the two consecutive previous Starfires while under the effects of Eclipse, and have been casting Starfire under Eclipse before those.

Also of note is that we're rather lucky that none of these sequences hinges on whether or not NG is up on any of the previous casts, and that's rather contrived. Less haste, and it's very possible that NG is the difference between 2 or 3 previous casts. More haste and it's the difference in some of the Starfire sequences. If NG were a factor in the decision tree, then our tree would be dependent on a second tree, which would likely in turn be dependent on another, cascading endlessly. Such a situation would (and, since that's the normal case, is) be practically impossible to solve probabilistically, requiring orders of magnitude more complex math than I'm willing to devote to the project. Suffice it to say that, as Hamlet mentioned, the decrease in error of the models in WC and Rawr are not worth the increase in time spent not only developing the model, but actually using it to generate the tree, and then the probabilities corresponding to it for a given gear set.
Attached Files
 Stat equivalence.xls (70.5 KB, 228 views)
Posted in Moonkin