So, I think we're getting there with the modelling of bad luck protection and proc overlaps. This is what I have at the moment:
Let the average proc rate, avg_rate = (RPPM*(1+Haste))/60
For trinkets with ICD: proc overlap is obviously not a concern here. The uptime is just [proc duration / average time between procs]. Average time between procs is [1/avg_rate] + ICD
For trinkets without ICD: here we can't just measure proc uptime by [proc duration / average time between procs], because procs can overlap. Instead, we can model the RPPM mechanic as a Poisson distribution, which gives us an uptime = 1-EXP((-avg_rate*Proc_duration))
Bad luck protection:
There are two approaches here. One is to multiply average proc time by 13.07%, as mentioned above on this thread. For the mathematical derivation please see
this work by Jay (@Hamlet EJ).
There is a second approach, which uses mathematica to get a formula which takes into account bad luck protections (and so eliminates the need to multiply by 13.07%, which feels like a bit of a fudge). The approach here is to integrate the equations over the two time periods (the 'regular time' and the 'time after bad luck protection kicks in'). Conjor is working on that at the moment (links above on this thread), but for now multiplying by 13.07% seems more accurate to me.
Using the math above, and assuming 23% haste, I'm getting the following average uptimes:
Bad Juju: 22.5%
Renataki's: 22.7%
Talisman: 53.5%
RoRo: here the uptime increases with ilvl. 16.9% for 541, 16.3% for 535, 15.6% for 528 and 15.1% for for the 522 one.
Any and all feedback or corrections on the math are very welcome.
____
Edited: corrected one incorrect statement (multiplier applies to average proc time, not average uptime as originally stated) and edited sample uptime values accordingly.