![]() |
|
#11
|
|||
|
At 170 Dex you get 1.5 PPM. At 47 delay, that means a swing every 4.7 seconds, or 12.76 swings/minute. At 1.5 PPM, that's 1.5 procs per 12.76 swings, or a proc rate of 11.75% for each swing. I know very little about both weapon delay and proc calculations, so please correct me if I'm wrong here.
JBB has an 8 second cast, and with 132 seconds per fight, that's 16 casts. Let's assume you take a swing before first cast, and lets say you have excellent reflexes, and click JBB almost simultaneously with swinging. Note I see you've fiddled some more with the numbers since I did this calculation; I can update it if you'd like. Let t=0 be when the mob has been pulled, slowed, and first engaged in melee. A proc here will last 132 seconds, or 22 ticks. A proc here will do 40 + 24 * 22 or 568 damage. At t=8, second chance to proc. There's (132 - 8) / 6 = 20 (rounded down) ticks left. If there's been no prior proc, a proc is worth 40 + 24 * 20 = 520. If there's a prior proc, only the DD component counts: 40 damage. So we can build a table: Now, what are the probabilities of each possible outcome? At t=0, it's simple: there's a 11.75% chance of a proc. At t=8, the chance of a proc is 11.75%. There's a 11.75% chance there was a proc at t=0, and an 88.25% chance there was no prior proc. At t=16, we get to the real meat of the problem. To calculate the chance of a prior proc, there's an 11.75% chance of a proc at t=0, and a 11.75% chance of a proc at t=8, but these are independent possibilities. 1) The chance of a proc at 0 and 8 is 11.75 * 11.75. 2) The chance of a proc at 0 and not 8 is 11.75 * 88.25. 3) The chance of no proc at 0 and a proc at 8 is 88.25 * 11.75 4) The chance of no proc at 0 and no proc at 8 is 88.25 * 88.25 This is a classic binomial distribution. You can also think of this as flipping a coin every 8 seconds, where the chance of heads is 11.75% and the chance of tails is 88.25%. The relevant formula is the probability mass function: https://en.wikipedia.org/wiki/Binomi...on#Definitions The vertical (n k) notation is spoken as "n choose k" or sometimes written as nCk and described in more detail here: https://en.wikipedia.org/wiki/Binomial_coefficient To apply this to our problem, we can use this formula to calculate the probability of no prior proc, i.e. setting k=0 (n choose 0) * p^0 * (1-p)^(n-0) (n choose 0) is always 1, so this simplifies to (1 - p)^n So at each 8 second interval (the variable n), the damage of a proc will be 44 * (1 - (1 - p)^n) + (44 + 24 * (132 - 8*n) / 6) * (1 - p)^n p is the chance of a proc, or 0.1175 Over a 132 second fight, there's 16 casts, so we need to sum this over n = 0 to 15 inclusive. Let's implement this in Python; perhaps that will be easier to follow: Code:
p = 0.1175
def no_prior(n, fight_length = 132):
"""" 44 dd plus 24 per tick remaining in the fight """
from math import floor
ticks_remaining = floor((fight_length - 8 * n) / 6)
return 44 + 24 * ticks_remaining
def prior(n):
"""" if there's been a prior proc, only the dd matters """
return 44
expected_damage = 0
for n in range(0, 16):
prior_probability = pow(1 - p, n)
expected_damage_this_interval = prior(n) * prior_probability + no_prior(n) * (1 - prior_probability)
expected_damage += expected_damage_this_interval
print(expected_damage)
| ||
|
|