A Pseudo Random Distribution refers to the Warcraft III engine's dynamic probability calculations for certain percentage-based attack modifiers. Rather than using a static percentage, the probability is first set to a small initial value, then gradually increased with each consecutive attack for which the modifier does not occur. The probability then drops back to the initial value when the attack modifier does apply. Not only does this system make long strings of successful modifiers unlikely, but it also makes going an entire game without an attack modifier occurring impossible, as eventually the dynamic probability exceeds 100% and "forces" a modifier on the next attack. The distribution of attack modifiers is therefore not truly random, hence the term Pseudo Random Distribution. In general, all abilities that are rounded to the nearest 5% in the
Warcraft III engine follow this probability distribution.
Pseudo Random Abilities
The list of all currently known base abilities that follow this system of balanced randomness is shown below. Triggered abilities notably do not fall in this list.
•
Critical Strike (ex. Coup de Graçe, Crystalys)
•
Bash (ex. Time Lock, Slithereen Guard's Bash. Since its remake, Cranium Basher no longer follows this distribution.)
•
Pulverize (ex. Flaming Fists, Anchor Smash)
•
Orb of Slow (ex. Maim, Maelstrom)
•
Hardened Skin (ex. Stout Shield, Vanguard)
Probability Mechanics
Critical Strike Example
Consider the case of a 20% chance to Critical Strike. If the game were truly random, then for each attack there would be a 20% chance for the unit to land a Critical Strike, regardless of how many Critical Strikes had been performed in the past. A simple implementation would therefore be to select a random integer between 1 and 100, and if the integer was less than or equal to 20, then the engine would cause that attack to be a Critical (which is the usual construct used by triggered percentage-based abilities). While this implementation would, in the long run, average out to 20% of attacks being Criticals, there is nothing preventing an infinite series of Critical Strikes or, conversely, an absence of Critical Strikes for the entire game, although the chance is rather insignificant. To prevent the ensuing complaints and balance this random game mechanic, the Warcraft III developers implemented a Pseudo Random Probability Distribution.
Instead of there being a 20% chance to Critical Strike with every attack, the first attack made actually has a 5.57% chance to Critical Strike. If that is not a Critical Strike, then the second attack has a 11.14% chance to Critical. If that is also not a Critical Strike, then the third has a 16.71% chance to Critical, and so on, adding 5.57% for each consecutive non-Critical. When a Critical Strike does occur, however, the chance for the next attack resets to 5.57%. In the long run, the number of Critical Strikes divided by the total number of attacks somewhat approximates the stated 20%, but now it is extremely difficult to have a series of Critical Strikes, and also impossible to go more than 17 attacks without a Critical, because the percentage for the 18th attack (assuming 17 previous consecutive non-Critical attacks) is 100.26%. In effect, the game causes the number of attacks between Criticals to be skewed towards 1 / 20% = 5, with a maximum limit of 17.
Probability Formulas
For all of the abilities stated above, the Warcraft III engine uses an initial percentage (%) value that linearly increases with each consecutive attack for which the attack modifier does not apply. The probability formula for an attack modifier to occur is therefore:
P(N) = C * N
In this formula, P(N) is the % probability for the modifier to occur on the Nth attack, N is the number of attacks since the last attack modifier (minimum value of 1), and C is a constant that serves as both the initial % and the increase in % with each attack (Note: In the forum topic linked below, a slightly different formula is used in which N is defined as the number of in-between attacks, which has a minimum value of 0. For ease of comprehension, this article defines N as the number of attacks since the last attack modifier, with a minimum value of 1). Since this is a linear formula, when N reaches a high enough value, P(N) will exceed 1 and the next attack is guaranteed to have an attack modifier. Simple algebra shows this N value to be equal to 1 / C.
The value of C in turn depends on the probability stated in the World Editor for that skill; for the rest of this article, this stated probability will be referred to as P(E), the expected probability.
For obvious reasons, the overall probability of the attack modifier occurring should be as close as possible to P(E). In other words, after an infinite series of attacks, the number of attack modifiers that occurred divided by the total number of attacks should ideally be equal to P(E). However, Warcraft III's Pseudo Random Distribution actually results in an overall probability that is less than P(E). While this negative deviation is insignificant at low P(E), differing by less than a percent for P(E) = 30%, the error increases sharply for higher percentages: a P(E) of 80% actually has a probability of only ~66%. This error likely results from two factors:
1.
A truncation in C. Without an infinite number of digits available for C, it is virtually impossible for a linear probability formula to accurately model a random distribution for a given P(E). Simply calculating C requires a significant amount of computing time, considering that it has to match an entire probability distribution to a single constant. This is the reason why all of the above skills are rounded to the nearest 5%: instead of dynamically calculating C as well, which would take up far too many CPU resources for each attack, the developers were able to create a static table of C values for 5%, 10%, 15%, ...95%, which could then be substituted into the above formula to determine P(N). The truncation of these defined values, which always results in smaller values, then leads to actual probabilities that are less than P(E).
2.
Ladder P(E) values. Blizzard tailored Warcraft for Ladder play, not custom maps, and the highest P(E) in Ladder is the Tauren's Pulverize, with a probability of 25%. It is likely not a coincidence that the error in P(E) increases significantly after this point. When Blizzard implemented the PRD, they probably only calculated C values for the percentages that they knew they'd use in Ladder, and all other values were simply estimated from those results (e.g. with a fitted exponential curve). Apparently they didn't care to check whether those values actually worked, leading to the current situation.
A table of C values is shown below for percentages up to 45%. The maximum number of consecutive attacks that can occur without the attack modifier is also listed for each C value. So for a Critical Strike with a value of 45%, a series of four normal attacks can occur, but the fifth attack will then have to be a Critical.
Note: For P(E) > 30%, C was estimated from in-game testing rather than a fitted probability distribution, in order to better reflect the rising error in P(E) after that point.
Pseudo Random Probability Constants
Expected Probability P(E) Constant (C) Max # of Consecutive Attacks without modifier