Skip to Content

The Dota 2 Pseudo-Random Distribution Creates Semi-Consistent Effects

It’s more correct to call this the Warcraft III PRD, as this mechanic originates from that engine. It’s used increasingly and more consistently in Dota, however, and the WC3 engine encodes incorrect c values for higher levels of pp.

In order to increase the consistency of some random effects, Dota 2 uses a “pseudo-random distribution” (PRD) to determine when those effects proc, or occur.

The Abyssal Blade’s ability Bash has a 25% chance to stun a target. In reality, it has about an 8.5% chance to proc on the first hit, a 17% chance to proc on the second hit, a 25.5% chance to proc on the third hit, and so on. When Bash procs, the chance is reset.

This:

1Bash also has a 2.3 second cooldown to prevent stunlocking, but that’s a mechanic specific to Bash and not intrinsic to PRD.

Math

There’s a PRD constant cc that’s associated with the effective probability pp of the effect. The chance of the effect proccing on the nnth test is:

P(n)=cnP(n) = c \cdot n

This test is only performed if the previous n1n - 1 tests fail.

For Bash, p=0.25p = 0.25, c0.0847c \approx 0.0847.

I’m unaware of a non-iterative way of deriving cc given pp.

Random Distribution (external link)
Calculating the constant C in Dota 2 pseudo-random distribution (external link)