Developer's Blog
Register Low Fi Mark Forums Read

Notices

Reply
 
Thread Tools
Old 07-02-2009, 06:50 AM   #1
Adra
Member
 
Join Date: Jun 2009
Posts: 42
Adra is offline

Default [Article] Pseudo Random Distribution


Overview
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. Phantom Assassin’s Coup de Grace, Crystalys)
  • Bash (ex. Faceless Void’s Time Lock. As of its remake, Cranium Basher does not follow this distribution.)
  • Pulverize (ex. Infernal’s Flaming Fists, Tidehunter’s 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.

The following sections deal with specific mechanics of the PRD. It is very long, and probably very boring too, unless you enjoy math and/or coding. For everyone else, feel free to skip down to the Summary section at the end.

Probability Formula
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:
Code:
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. 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.

Pseudo Random Probability Constants
Two tables of C values are shown below. P(E) is the expected probability, C is the constant, and the maximum number of consecutive attacks that can occur without the attack modifier is listed under Max N. 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. This first table represents the theoretical C values for every multiple of 5%, which were calculated using numerical methods (credits to ICallBotSolo and Cano Tolto).

Theoretical Probability Constants
P(E) C Max N
-------------------
5% 0.00380 263
10% 0.01475 67
15% 0.03222 31
20% 0.05570 17
25% 0.08474 11
30% 0.11895 8
35% 0.15798 6
40% 0.20155 4
45% 0.24931 4
50% 0.30210 3
55% 0.36040 2
60% 0.42265 2
65% 0.48113 2
70% 0.57143 1
75% 0.66667 1
80% 0.75000 1
85% 0.82353 1
90% 0.88889 1
95% 0.94737 1


These theoretical probability constants do not match the ones that Blizzard employs, however, with serious consequences that will soon be made clear. This next table lists the C values that the WC3 engine appears to use, along with the corresponding actual probability. These values were estimated from experiments involving upwards of a million attacks.

Actual Probability Constants
P(E) C Max N P(Actual)
---------------------------
5% 0.00380 2635%
10%0.01475 6710%
15%0.03221 3115%
20%0.05570 1720%
25%0.08475 1124.9%
30%0.11895 829.1%
35%0.14628633.6%
40%0.18128 537.8%
45%0.21867 441.6%
50%0.25701345.7%
55%0.29509349.4%
60%0.33324353.0%
65%0.38109256.4%
70%0.42448260.1%
75%0.46134263.2%
80%0.50276166.7%
85%0.57910170.3%
90%0.67068175.0%
95%0.77041181.3%
   


The table below has a side by side comparison of theoretical and actual values:

Compiled Probability Constants
P(E) Theoretical C Actual C Theoretical Max N Actual Max N P(Actual)
----------------------------------------------------------------
5% 0.00380 0.00380 263 263 5.0%
10% 0.01475 0.01475 67 67 10.0%
15% 0.03222 0.03221 31 31 15.0%
20% 0.05570 0.05570 17 17 20.0%
25% 0.08474 0.08475 11 11 24.9%
30% 0.11895 0.11895 8 8 29.1%
35% 0.15798 0.14628 6 6 33.6%
40% 0.20155 0.18128 4 5 37.8%
45% 0.24931 0.21867 4 4 41.6%
50% 0.30210 0.25701 3 3 45.7%
55% 0.36040 0.29509 2 3 49.4%
60% 0.42265 0.33324 2 3 53.0%
65% 0.48113 0.38109 2 2 56.4%
70% 0.57143 0.42448 1 2 60.1%
75% 0.66667 0.46134 1 2 63.2%
80% 0.75000 0.50276 1 1 66.7%
85% 0.82353 0.57910 1 1 70.3%
90% 0.88889 0.67068 1 1 75.0%
95% 0.94737 0.77041 1 1 81.3%


As the tables show, the actual and theoretical C values agree closely up to 30%, but then diverge sharply. In other words, the actual probability of attack modifiers is significantly lower than the expected probability as P(E) increases, a mistake that Blizzard has yet to correct.

Probability Error
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.7%. 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). This effect should be nearly negligible for high C values, however, meaning that this cannot account for the significant errors seen at high 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.

Probability Distribution
To make the difference between the PRD and true random distributions even more clear, consider one of the above abilities with P(E) = 10%. The following graph shows the probability of getting an attack modifier on the Nth attack since the last modifier occurred, if the distribution were truly random. It is important to note that while the probability of getting an attack modifier for each individual attack is always 10% in a true random distribution, simply getting to the Nth attack without an attack modifier has only a (1 - P(E))^(N - 1) chance. So for N = 2, the probability is 0.09: 90% chance that the first (N = 1) attack was not an attack modifier, multiplied by the chance of getting a critical for the N = 2 attack (10% for all attacks in a true random mechanism).

Note that the distribution follows a simple exponential formula, with a probability that steadily decreases by 0.1 with each consecutive attack.

Now compare that graph with this Pseudo Random Distribution. This graph shows the same probability of getting an attack modifier on the Nth attack since the last modifier occurred, but with Warcraft III's Pseudo Random Distribution. Again, it is important to note that this graph does not show the individual probability of getting an attack modifier on the Nth attack (which is given by P(N) = C * N), but the product of P(N) and the chance that none of the previous N - 1 attacks have had a successful attack modifier.

Note that the chance for the first attack is equal to the value of C for P(E) = 10%: 0.01475. The differences should be clear: there is a much lower chance of getting consecutive attack modifiers, the overall distribution is shifted to the right, and there is also a finite point at which the probability reaches 0, although not quite shown on this graph.

Practical Implications
Attack Counter
The attack counter N is integral to the PRD, but its mechanics are not fully understood. Much of the following is inferred from observation and common sense, simply because we have no way of knowing exactly how Blizzard implemented the PRD. The counter does not increase when attacking units against whom the attack modifier cannot apply. So attacking an enemy building would not increase the chance of a Critical Strike or Bash on the first subsequent attack(s) on an enemy unit. The counter also does not increase when the hero misses an attack due to Evasion, height difference, or debuffs such as Drunken Haze. Attacks “evaded” through Triggered Heals will still apply to the counter, however.

For Orb of Slow-based abilities, the counter is not disabled during the cooldown period. This means that attacks made by the Spirit Bear during the cooldown of Entangle will greatly increase the chance of entangling as soon as the cooldown is over.

Each pseudo random skill has its own attack counter, even if multiple skills of the same type are on the same hero. If multiple pseudo random skills proc at the same time but one overrides, both counters are reset nonetheless, e.g. in the case of two Critical Strikes. On a similar note, Illusions have their own attack counters for skills they inherit from the parent hero.

Applications
The Pseudo Random Distribution permeates all of gameplay, with some direct applications as well. A hero with a Critical Strike ability could fight creeps until a long string of non-Criticals occurred, then head into a team battle with an increased Critical Strike chance for his first attack(s). Such a tactic, while time consuming, could significantly increase the hero's DPS for that battle. The applications are even greater for heroes with an innate Bash skill, who could build up the same string of non-Bashes in order to maximize their chances of landing a Bash in the beginning of battle (remember that Cranium Basher does not follow the PRD). Furthermore, the fact that consecutive Bashes are discouraged by the Pseudo Random Distribution benefits Bash heroes greatly in that stun times will not overlap as much as in a true random distribution, making Permabashing a distinct possibility. Stacking attack speed items may therefore be feasible on these heroes, and especially for Syllabear’s Spirit Bear for the reason stated above.

Summary
The PRD is a built-in feature of the Warcraft III engine that balances many chance-based abilities to prevent too many or too few activations. Because of this system, players are guaranteed an attack modifier (ex. Critical Strike, Damage Block, Bash, etc) after a certain number of attacks. Every time an attack occurs (that is against a valid target and does not Miss) and the modifier does not activate, the chance of the modifier activating in the future increases linearly; when the modifier does proc, however, the chance drops back to a low initial value. As a result, attack modifiers tend to occur non-consecutively and at more regular intervals. Due to a programming oversight by Blizzard, at percentages greater than 30%, attack modifiers regulated by the PRD activate less frequently than they should. The PRD does not affect Evasion or triggered skills such as Multicast and Starfall.

See Also
Forum Topics 219284 and 221292. In these forum topics, 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.


Disclaimer:
This article was originally written for the Dota-Allstars Wiki in October 2008. This subject was first researched in May 2008, but the person who said he'd write a guide about it never got around to it. So after realizing there still wasn't any consolidated guide or article about this fairly hefty game mechanic, I compiled all the information from the two forum topics and wrote this guide. I do not claim any of the findings as my own, nor do I take any credit for the testmaps, formulas, or findings from Malle, ICallBotSolo, 1239, and many others who contributed. The additions from Cano Tolto, Clogon, and 3DM@rk were invaluable in updating this article, as was the testmap from KileRatZ which was instrumental in estimating the actual probabilities and constants. Thanks to Wyvernoid for editing the first versions.

Feedback, and especially corrections, would be greatly appreciated.
  Reply With Quote
Last edited by Adra; 07-20-2009 at 11:00 PM.
Old 07-02-2009, 07:04 AM   #2
starfighter9
Member
 
starfighter9's Avatar
 
Join Date: Jun 2009
Location: Singapore
Posts: 877
starfighter9 is offline
Default Re: [Article] Pseudo Random Distribution
Did you find this post helpful? Yes | No

Nice, we can finally have something to direct people to rather than re-explain prd everytime someone posts a topic about it. IMO we should have this in the index on the mechanics page, or at least have it in the advanced mechanics guides section.
  Reply With Quote
Old 07-02-2009, 07:52 AM   #3
IPlayForKeeps
Member
 
Join Date: Jun 2009
Posts: 264
IPlayForKeeps is offline
Default Re: [Article] Pseudo Random Distribution
Did you find this post helpful? Yes | No

This guide is amazing to be honest it helped me a lot!!
__________________
  Reply With Quote
Old 07-02-2009, 09:00 AM   #4
reh
Member
 
reh's Avatar
 
Join Date: Jun 2009
Location: .de
Posts: 272
reh is offline
Default Re: [Article] Pseudo Random Distribution
Did you find this post helpful? Yes | No

That article was missing here, already loved it on DA.
Very helpfull if some people go like "omg entangle luck, perma entangle wtfbbq".
One link and it's clear, this time the thread looks even better.
  Reply With Quote
Old 07-02-2009, 07:15 PM   #5
ImmolatusBurn
Member
 
ImmolatusBurn's Avatar
 
Join Date: May 2009
Location: Minnesota
Posts: 1,424
Blog Entries: 3
ImmolatusBurn is offline
Default Re: [Article] Pseudo Random Distribution
Did you find this post helpful? Yes | No

Moved to Advanced Mechanics Guides.
__________________
  Reply With Quote
Old 07-20-2009, 06:14 AM   #6
Ingolf
Member
 
Ingolf's Avatar
 
Join Date: Jun 2009
Posts: 1,211
Ingolf is offline
Default Re: [Article] Pseudo Random Distribution
Did you find this post helpful? Yes | No

Is it possible that you could summarize the guide near the end? I'm not very good with numbers and it's a long read for my old n' gray eyes .
  Reply With Quote
Old 07-20-2009, 10:38 PM   #7
Adra
Member
 
Join Date: Jun 2009
Posts: 42
Adra is offline
Default Re: [Article] Pseudo Random Distribution
Did you find this post helpful? Yes | No

Uh...the Overview at the very beginning summarizes pretty much everything that the casual gamer will care about. I'd at least recommend reading the "Critical Strike Example" to get the gist of it, the rest is math jumbo and specific mechanics.

But yea, sure, I'll add a tl;dr disclaimer near the top.
  Reply With Quote
Old 07-28-2009, 09:53 PM   #8
Steric
Member
 
Steric's Avatar
 
Join Date: Jul 2009
Posts: 1,244
Steric is offline
Default Re: [Article] Pseudo Random Distribution
Did you find this post helpful? Yes | No

Quote:
For Orb of Slow-based abilities, the counter is not disabled during the cooldown period. This means that attacks made by the Spirit Bear during the cooldown of Entangle will greatly increase the chance of entangling as soon as the cooldown is over.
Can the Orb of Slow-based ability activate if the ability is in cooldown, doing nothing but reseting the number of attacks since last activation?
  Reply With Quote
Old 07-28-2009, 11:37 PM   #9
Adra
Member
 
Join Date: Jun 2009
Posts: 42
Adra is offline
Default Re: [Article] Pseudo Random Distribution
Did you find this post helpful? Yes | No

No. But we're still working out the kinks in Orb of Slow, it's pretty screwy.
  Reply With Quote
Old 08-30-2009, 07:18 PM   #10
Cactrot
Member
 
Cactrot's Avatar
 
Join Date: Jun 2009
Location: Boston, Toronto, L.A.
Posts: 282
Cactrot is offline
Default Re: [Article] Pseudo Random Distribution
Did you find this post helpful? Yes | No

PA's Blur evasion works the same way?
  Reply With Quote
Old 08-30-2009, 09:50 PM   #11
Robzor
Member
 
Robzor's Avatar
 
Join Date: Jun 2009
Location: Stockholm, Sweden
Posts: 859
Robzor is offline
Default Re: [Article] Pseudo Random Distribution
Did you find this post helpful? Yes | No

No, only six base abilities are known to behave in accordance to this pattern. These are;
  • Critical Strike
  • Pulverize
  • Hardened Skin
  • Bash
  • Orb of Slow
  • Demolish (never occurs in DotA)
  Reply With Quote
Old 08-30-2009, 09:54 PM   #12
desOo
Member
 
desOo's Avatar
 
Join Date: Jun 2009
Location: Switzerland.
Posts: 1,182
desOo is offline
Default Re: [Article] Pseudo Random Distribution
Did you find this post helpful? Yes | No

I find this everiwhere, but I'm still too lazy to understand it.
__________________

  Reply With Quote
Old 09-16-2009, 12:40 PM   #13
Cáno
Member
 
Cáno's Avatar
 
Join Date: Jul 2009
Location: Kraków, Poland
Posts: 4,132
Cáno is offline
Default Re: [Article] Pseudo Random Distribution
Did you find this post helpful? Yes | No

Even though I'm credited (thanks!) here for this:
Code:
 _____________________________________________________________ 
|                            Results                          |
|=============================================================|
|   P(E): 0.01   |  C: 0.00016  |  N: 6250 | ERR:  0.00012648 |
|   P(E): 0.02   |  C: 0.00062  |  N: 1613 | ERR: -0.00000141 |
|   P(E): 0.03   |  C: 0.00139  |  N: 720  | ERR:  0.00004174 |
|   P(E): 0.04   |  C: 0.00245  |  N: 409  | ERR:  0.00001194 |
|   P(E): 0.05   |  C: 0.0038   |  N: 264  | ERR: -0.00001107 |
|   P(E): 0.06   |  C: 0.00544  |  N: 184  | ERR: -0.00000059 |
|   P(E): 0.07   |  C: 0.00736  |  N: 136  | ERR:  0.00000628 |
|   P(E): 0.08   |  C: 0.00955  |  N: 105  | ERR: -0.00001036 |
|   P(E): 0.09   |  C: 0.01202  |  N: 84   | ERR:  0.00001398 |
|   P(E): 0.1    |  C: 0.01475  |  N: 68   | ERR:  0.00001454 |
|   P(E): 0.11   |  C: 0.01774  |  N: 57   | ERR:  0.00001193 |
|   P(E): 0.12   |  C: 0.02098  |  N: 48   | ERR: -0.00000956 |
|   P(E): 0.13   |  C: 0.02448  |  N: 41   | ERR: -0.00000663 |
|   P(E): 0.14   |  C: 0.02823  |  N: 36   | ERR:  0.00000091 |
|   P(E): 0.15   |  C: 0.03222  |  N: 32   | ERR: -0.00000223 |
|   P(E): 0.16   |  C: 0.03645  |  N: 28   | ERR: -0.00000523 |
|   P(E): 0.17   |  C: 0.04092  |  N: 25   | ERR:  0.00000019 |
|   P(E): 0.18   |  C: 0.04562  |  N: 22   | ERR: -0.00000028 |
|   P(E): 0.19   |  C: 0.05055  |  N: 20   | ERR:  0.00000131 |
|   P(E): 0.2    |  C: 0.0557   |  N: 18   | ERR: -0.00000765 |
|   P(E): 0.21   |  C: 0.06108  |  N: 17   | ERR: -0.00000150 |
|   P(E): 0.22   |  C: 0.06668  |  N: 15   | ERR:  0.00000627 |
|   P(E): 0.23   |  C: 0.07249  |  N: 14   | ERR:  0.00000414 |
|   P(E): 0.24   |  C: 0.07851  |  N: 13   | ERR: -0.00000178 |
|   P(E): 0.25   |  C: 0.08474  |  N: 12   | ERR: -0.00000643 |
|   P(E): 0.26   |  C: 0.09118  |  N: 11   | ERR: -0.00000524 |
|   P(E): 0.27   |  C: 0.09783  |  N: 11   | ERR:  0.00000539 |
|   P(E): 0.28   |  C: 0.10467  |  N: 10   | ERR: -0.00000035 |
|   P(E): 0.29   |  C: 0.11171  |  N: 9    | ERR: -0.00000244 |
|   P(E): 0.3    |  C: 0.11895  |  N: 9    | ERR:  0.00000110 |
|   P(E): 0.31   |  C: 0.12638  |  N: 8    | ERR:  0.00000086 |
|   P(E): 0.32   |  C: 0.134    |  N: 8    | ERR: -0.00000107 |
|   P(E): 0.33   |  C: 0.14181  |  N: 8    | ERR:  0.00000605 |
|   P(E): 0.34   |  C: 0.14981  |  N: 7    | ERR: -0.00000011 |
|   P(E): 0.35   |  C: 0.15798  |  N: 7    | ERR: -0.00000378 |
|   P(E): 0.36   |  C: 0.16633  |  N: 7    | ERR:  0.00000137 |
|   P(E): 0.37   |  C: 0.17491  |  N: 6    | ERR:  0.00000086 |
|   P(E): 0.38   |  C: 0.18362  |  N: 6    | ERR: -0.00000527 |
|   P(E): 0.39   |  C: 0.19249  |  N: 6    | ERR:  0.00000450 |
|   P(E): 0.4    |  C: 0.20155  |  N: 5    | ERR:  0.00000277 |
|   P(E): 0.41   |  C: 0.21092  |  N: 5    | ERR: -0.00000005 |
|   P(E): 0.42   |  C: 0.22036  |  N: 5    | ERR: -0.00000485 |
|   P(E): 0.43   |  C: 0.2299   |  N: 5    | ERR:  0.00000140 |
|   P(E): 0.44   |  C: 0.23954  |  N: 5    | ERR: -0.00000014 |
|   P(E): 0.45   |  C: 0.24931  |  N: 5    | ERR:  0.00000310 |
|   P(E): 0.46   |  C: 0.25987  |  N: 4    | ERR: -0.00000220 |
|   P(E): 0.47   |  C: 0.27045  |  N: 4    | ERR: -0.00000280 |
|   P(E): 0.48   |  C: 0.28101  |  N: 4    | ERR:  0.00000224 |
|   P(E): 0.49   |  C: 0.29155  |  N: 4    | ERR: -0.00000217 |
|   P(E): 0.5    |  C: 0.3021   |  N: 4    | ERR: -0.00000280 |
|   P(E): 0.51   |  C: 0.31268  |  N: 4    | ERR:  0.00000322 |
|   P(E): 0.52   |  C: 0.32329  |  N: 4    | ERR: -0.00000053 |
|   P(E): 0.53   |  C: 0.33412  |  N: 3    | ERR:  0.00000012 |
|   P(E): 0.54   |  C: 0.34737  |  N: 3    | ERR:  0          |
|   P(E): 0.55   |  C: 0.3604   |  N: 3    | ERR:  0.00000161 |
|   P(E): 0.56   |  C: 0.37322  |  N: 3    | ERR:  0.00000244 |
|   P(E): 0.57   |  C: 0.38584  |  N: 3    | ERR:  0.00000030 |
|   P(E): 0.58   |  C: 0.39828  |  N: 3    | ERR:  0.00000143 |
|   P(E): 0.59   |  C: 0.41054  |  N: 3    | ERR: -0.00000375 |
|   P(E): 0.6    |  C: 0.42265  |  N: 3    | ERR:  0.00000024 |
|   P(E): 0.61   |  C: 0.4346   |  N: 3    | ERR: -0.00000375 |
|   P(E): 0.62   |  C: 0.44642  |  N: 3    | ERR:  0.00000060 |
|   P(E): 0.63   |  C: 0.4581   |  N: 3    | ERR: -0.00000381 |
|   P(E): 0.64   |  C: 0.46967  |  N: 3    | ERR:  0.00000006 |
|   P(E): 0.65   |  C: 0.48113  |  N: 3    | ERR:  0.00000399 |
|   P(E): 0.66   |  C: 0.49248  |  N: 3    | ERR: -0.00000065 |
|   P(E): 0.67   |  C: 0.50746  |  N: 2    | ERR: -0.00000119 |
|   P(E): 0.68   |  C: 0.52941  |  N: 2    | ERR: -0.00000077 |
|   P(E): 0.69   |  C: 0.55072  |  N: 2    | ERR: -0.00000220 |
|   P(E): 0.7    |  C: 0.57143  |  N: 2    | ERR:  0.00000072 |
|   P(E): 0.71   |  C: 0.59155  |  N: 2    | ERR:  0.00000036 |
|   P(E): 0.72   |  C: 0.61111  |  N: 2    | ERR: -0.00000059 |
|   P(E): 0.73   |  C: 0.63014  |  N: 2    | ERR:  0.00000161 |
|   P(E): 0.74   |  C: 0.64865  |  N: 2    | ERR:  0.00000072 |
|   P(E): 0.75   |  C: 0.66667  |  N: 2    | ERR:  0.00000191 |
|   P(E): 0.76   |  C: 0.68421  |  N: 2    | ERR: -0.00000029 |
|   P(E): 0.77   |  C: 0.7013   |  N: 2    | ERR:  0.00000077 |
|   P(E): 0.78   |  C: 0.71795  |  N: 2    | ERR:  0.00000077 |
|   P(E): 0.79   |  C: 0.73418  |  N: 2    | ERR:  0.00000173 |
|   P(E): 0.8    |  C: 0.75     |  N: 2    | ERR:  0          |
|   P(E): 0.81   |  C: 0.76543  |  N: 2    | ERR: -0.00000143 |
|   P(E): 0.82   |  C: 0.78049  |  N: 2    | ERR:  0.00000143 |
|   P(E): 0.83   |  C: 0.79518  |  N: 2    | ERR: -0.00000047 |
|   P(E): 0.84   |  C: 0.80952  |  N: 2    | ERR: -0.00000262 |
|   P(E): 0.85   |  C: 0.82353  |  N: 2    | ERR:  0.00000042 |
|   P(E): 0.86   |  C: 0.83721  |  N: 2    | ERR:  0.00000048 |
|   P(E): 0.87   |  C: 0.85057  |  N: 2    | ERR: -0.00000351 |
|   P(E): 0.88   |  C: 0.86364  |  N: 2    | ERR:  0.00000280 |
|   P(E): 0.89   |  C: 0.8764   |  N: 2    | ERR: -0.00000351 |
|   P(E): 0.9    |  C: 0.88889  |  N: 2    | ERR:  0.00000095 |
|   P(E): 0.91   |  C: 0.9011   |  N: 2    | ERR:  0.00000089 |
|   P(E): 0.92   |  C: 0.91304  |  N: 2    | ERR: -0.00000298 |
|   P(E): 0.93   |  C: 0.92473  |  N: 2    | ERR: -0.00000107 |
|   P(E): 0.94   |  C: 0.93617  |  N: 2    | ERR: -0.00000017 |
|   P(E): 0.95   |  C: 0.94737  |  N: 2    | ERR:  0.00000143 |
|   P(E): 0.96   |  C: 0.95833  |  N: 2    | ERR: -0.00000303 |
|   P(E): 0.97   |  C: 0.96907  |  N: 2    | ERR: -0.00000208 |
|   P(E): 0.98   |  C: 0.97959  |  N: 2    | ERR: -0.00000178 |
|   P(E): 0.99   |  C: 0.9899   |  N: 2    | ERR:  0.00000095 |
|   P(E): 1      |  C: 1        |  N: 1    | ERR:  0          |
|________________|______________|__________|__________________|

I still quite don't get how to obtain these values using mathematical methods (this table is generated with a program I wrote, but it obtains the values with recursive function ran thousands of time - that's pretty retarded).

These are two posts I don't get - by 3DM@rk and ICallBotSolo (unfortunately he's not active here).
Could somebody define what exactly does the term numerical methods mean?

Greets
Cáno
  Reply With Quote
Last edited by Cáno; 09-16-2009 at 12:53 PM.
Old 09-16-2009, 06:18 PM   #14
Adra
Member
 
Join Date: Jun 2009
Posts: 42
Adra is offline
Default Re: [Article] Pseudo Random Distribution
Did you find this post helpful? Yes | No

They mean numerical analysis, which is exactly what you did - approximating the actual value of C by recursively solving over a huge number of iterations. ICallBotSolo proposed that linear formula, then created a huge-ass excel sheet to do the actual work (though I might be remembering his results sheet instead, as I recall he worked with MATLAB a lot).

As for 3DM@rk's post, I'm sure he would do a much better job explaining this, so bear with my longwinded explanation: At high percentages, N is low, so we know exactly how many attacks are possible. For P(E) = 100% (trivial case), we can construct the formula:
Code:
P(E) = 1 critical / (1 attack)
So this formula states that we are guaranteed a [numerator, i.e. one] critical every [denominator] number of attacks. As P(E) drops and the number of possible attacks increases, we add terms to the denominator to denote the probability of additional attacks being needed. So for P(E) >= 0.7, N = 2 and we add the term (1 - C) to the denominator to describe the probability of reaching the second attack.
Code:
P(E) = 1 / (1 + (1 - C))
P(E) = 1 / (2 - C)
1 / P(E) = 2 - C
C = 2 - 1 / P(E)
For P(E) between 0.55 and 0.65, 3 attacks are possible, and we add the term (1 - C)*(1 - 2C) to the denominator.
Code:
P(E) = 1 / (1 + (1 - C) + (1 - C)*(1 - 2C))
This simplifies to:
Code:
P(E) = 1 / (2*C^2 - 4*C + 3)
We could continue doing this, adding terms to the denominator, but as you might imagine, the formula gets messy in a hurry with all the exponents.
  Reply With Quote
Last edited by Adra; 09-16-2009 at 06:21 PM.
Old 09-16-2009, 08:02 PM   #15
3DM@rk
Member
 
Join Date: Jun 2009
Location: CZ
Posts: 676
3DM@rk is offline
Default Re: [Article] Pseudo Random Distribution
Did you find this post helpful? Yes | No

Quote:
Originally Posted by Cáno View Post
These are two posts I don't get - by 3DM@rk ...
Adra explained pretty well everything.

It's just applied theory of probability. P(E) expresses the average number of critical strikes per one attack.
Let's examine the probabilities here:
  • (a) the probability, that the first attack is a Critical Strike, is C
  • (b) the probability, that the first attack was not a Critical Strike, is 1-C (complementary event)

If C>=0.5, option (b) means that the second attack was a Critical strike.

In point (a), we made one attack to score a critical strike (with probability C), in point (b), we had to make two attacks to score a critical strike (with probability 1-C).
We have covered the whole sample space (for C>=0.5), so we can make a weighted mean to obtain 1/P(E), aka the average number of attacks per one Critical Strike:

Code:
1/P(E) = C*1 + (1-C)*2
1/P(E) = C + 2 - 2*C
1/P(E) = 2 - C
By expressing C from the equation, we get:

Code:
C = 2 - 1/P(E)
This formula is only valid if it yields C>=0.5, otherwise the initial assumption would be incorrect.

For C<0.5, we need to add more summands to the weighted mean, making the equation more complicated (and of higher degree in C).
__________________
  Reply With Quote
Old 09-17-2009, 02:14 PM   #16
Cáno
Member
 
Cáno's Avatar
 
Join Date: Jul 2009
Location: Kraków, Poland
Posts: 4,132
Cáno is offline
Default Re: [Article] Pseudo Random Distribution
Did you find this post helpful? Yes | No

Thanks to both of you. It looks so logical when explained.
The language is the greatest barrier in understanding maths related problems. Even these which shouldn't raise any doubts.

Greets
Cáno
  Reply With Quote
Old 12-02-2009, 11:57 PM   #17
Uareanoob
Member
 
Uareanoob's Avatar
 
Join Date: Sep 2009
Posts: 88
Uareanoob is offline
Default Re: [Article] Pseudo Random Distribution
Did you find this post helpful? Yes | No

Is javelin affected by PRD?
  Reply With Quote
Old 12-03-2009, 01:55 AM   #18
Adra
Member
 
Join Date: Jun 2009
Posts: 42
Adra is offline
Default Re: [Article] Pseudo Random Distribution
Did you find this post helpful? Yes | No

Nope, Javelin's bonus damage is not based on any of the base abilities that follow PRD. Javelin's 20% chance to deal 40 bonus damage is completely triggered, and roughly goes like this: Whenever a unit is attacked, check the attacker's inventory for Javelin. For each Javelin found, generate a random integer from 1 to 100; if the integer is less than or equal to 20, then have the attacker deal 40 damage to the target. Note that this means Javelin actually triggers at the start of an attack (whereas PRD-affected skills all act at damage point Edit: To clarify, PRD skills are actually checked and the counter incremented/reset at the start of attacks, but the effect doesn't happen until damage point).
  Reply With Quote
Last edited by Adra; 12-07-2009 at 04:28 AM.
Old 12-04-2009, 02:21 PM   #19
Very_Octopus
Member
 
Very_Octopus's Avatar
 
Join Date: Jun 2009
Location: Lithuania
Posts: 369
Blog Entries: 2
Very_Octopus is offline
Default Re: [Article] Pseudo Random Distribution
Did you find this post helpful? Yes | No

Nice article. I remember numerous threads where people complained where people had 20/20 or 0/20 multicasts in agame so I totally see the point why blizzard implemented it.

It gives some possibilities to abuse it in dota, e.g. let's say I was attacking creeps with mortred and didn't get any criticals for some 10 hits so.. I should land a blink strike on enemy because I would have increased chance to proc a crit then.
__________________
  Reply With Quote
Old 12-04-2009, 03:20 PM   #20
Black Isle
Member
 
Black Isle's Avatar
 
Join Date: Jun 2009
Posts: 3,014
Black Isle is offline
Default Re: [Article] Pseudo Random Distribution
Did you find this post helpful? Yes | No

Quote:
Originally Posted by Very_Octopus View Post
It gives some possibilities to abuse it in dota, e.g. let's say I was attacking creeps with mortred and didn't get any criticals for some 10 hits so.. I should land a blink strike on enemy because I would have increased chance to proc a crit then.
Call it advanced tactic instead of abuse (: be cool.
  Reply With Quote
Old 12-14-2009, 09:01 PM   #21
Ojfinden
Member
 
Join Date: Sep 2009
Posts: 4
Ojfinden is offline
Default Re: [Article] Pseudo Random Distribution
Did you find this post helpful? Yes | No

Nice article..just wondering, does PRD counts vs sange and maelstorm too?
  Reply With Quote
Old 12-14-2009, 09:30 PM   #22
Foede
Forum Staff
 
Foede's Avatar
 
Join Date: Jun 2009
Location: Elysian Fields
Posts: 16,966
Awesome 
Foede is online now
Default Re: [Article] Pseudo Random Distribution
Did you find this post helpful? Yes | No

Both are based on Orb of Slow, so yes. Read the beginning of the guide again
  Reply With Quote
Old 02-18-2010, 12:41 AM   #23
rigadri
Member
 
Join Date: Oct 2009
Posts: 37
rigadri is offline
Default Re: [Article] Pseudo Random Distribution
Did you find this post helpful? Yes | No

Counter is increased/reseted after missing attack (tested critical on dh's evasion spell). Counter is changed before attack, where IsAttackCritical is determined.
(I found counter in memory and looked how it is changing)

e: i guess 1st post should be edited with correct info
  Reply With Quote
Last edited by rigadri; 02-18-2010 at 02:15 AM.
Old 02-25-2010, 04:38 PM   #24
ph34rpet3
Member
 
ph34rpet3's Avatar
 
Join Date: Sep 2009
Posts: 265
ph34rpet3 is offline
Default Re: [Article] Pseudo Random Distribution
Did you find this post helpful? Yes | No

best article ever
__________________
  Reply With Quote
Old 03-12-2010, 12:28 AM   #25
rigadri
Member
 
Join Date: Oct 2009
Posts: 37
rigadri is offline
Default Re: [Article] Pseudo Random Distribution
Did you find this post helpful? Yes | No

I found a way to see all this constants C(found place where wc3 compares rndnumber and C*N). Im to lazy too get all of them so if anybody cares to know C for some particiluar % let me know and ill post it here
  Reply With Quote
Last edited by rigadri; 03-12-2010 at 12:30 AM.
Old 03-12-2010, 05:44 AM   #26
Adra
Member
 
Join Date: Jun 2009
Posts: 42
Adra is offline
Default Re: [Article] Pseudo Random Distribution
Did you find this post helpful? Yes | No

Well, never too late to learn new things. I hope you won't take my absence as an attempt to ignore you, I simply have not been active.

I will assume that you are being honest about observing how the counter changes, but I would like some clarification. We were aware that the counter increments before the attack; otherwise secondary attack animations would not function. I don't believe the article states anything to the contrary. However, when you say that you watched how the counter changed, does that apply only to your second statement (about the counter changing before the attack) or to your first statement about missed attacks as well? Your parenthetical statement about using Demon Hunter's Evasion initially made me think that you were testing just by watching a sequence of attacks against a DH, which can lead to issues if the attacks are interrupted. I don't think I need to tell you that your finding would contradict what many people (including myself) believed to be true, which is why I'm asking. It would also oppose the Order of Damage Calculations, which places Misses before Criticals (on the other hand, Splash is also calculated after Misses, yet Splash attacks work even on Missed attacks. So you may be correct).

Aside: When I first tested this matter with an 80% Orb of Slow, I chalked up the inconsistencies to the fact that any sequence of 2 normal attacks (which shouldn't be possible at 80%) only occurred with >1 Miss in the middle, which I assumed was sufficient to interrupt the chain of attacks. If you are correct, then this clearly has a different reason.

I would like to request the actual values of C for 30%, 35%, and 40% (the points at which the theoretical and actual values start diverging). Although since there are only 19 values of C, is it really that hard to extract them all?
  Reply With Quote
Old 03-12-2010, 01:33 PM   #27
rigadri
Member
 
Join Date: Oct 2009
Posts: 37
rigadri is offline
Default Re: [Article] Pseudo Random Distribution
Did you find this post helpful? Yes | No

^heh no problem. I thought nobody cares about this anymore coz it;s old and since this thread helped me a lot for some things i thought i should share what i have found.

I found a function which is called when unit with PRD ability attacked a valid target(non-buiilding,not-ally, etc). So far i figured this:
•PRDSpellClass is created for each PRD ability(when ability is picked) and matching one is pushed for this function.
•UnitClass of ability owner and UnitClass of attacked unit is pushed for this function (not sure atm what it does with this but i can asume it;s for further damage calculation)
•Current probability is calculated (C*N)
•Random real (float) number between 0 and 1 is generated and compared to current probability
•Attack counter in PRDSpellClass is set to 1 or incremented depending on previous comparation

This function is called before evasion is considered. I put blademaster and demon hunter on map and set evasion to 100%. Above function was called normaly (before i can see red miss above hero) so i guess at that point wc3 is not aware of evasion ability? I will know more about this when i figure out what;s this function reading/writing to/from unitclasses, but fact is that attack counter is changed no matter u miss attack due to evasion or not.

I'll post later all C values.(i'm not home atm) It's not hard, it's just boring a bit, especially if you asume noone is reading it
If u want me to do any special tests just send me map or smthing
  Reply With Quote
Old 03-12-2010, 01:40 PM   #28
SNOW37
Member
 
SNOW37's Avatar
 
Join Date: Jun 2009
Location: Canada
Posts: 999
Blog Entries: 2
SNOW37 is offline
Default Re: [Article] Pseudo Random Distribution
Did you find this post helpful? Yes | No

Just wondering how did you manage to get access the code for the WC3 engine rigadri?
__________________
You can call me LEMONS
  Reply With Quote
Old 03-12-2010, 01:51 PM   #29
rigadri
Member
 
Join Date: Oct 2009
Posts: 37
rigadri is offline
Default Re: [Article] Pseudo Random Distribution
Did you find this post helpful? Yes | No

Quote:
Originally Posted by SNOW37 View Post
Just wondering how did you manage to get access the code for the WC3 engine rigadri?
I used every posibble way but reverse engineering (not sure about forum rules in here )
  Reply With Quote
Old 03-12-2010, 02:20 PM   #30
SNOW37
Member
 
SNOW37's Avatar
 
Join Date: Jun 2009
Location: Canada
Posts: 999
Blog Entries: 2
SNOW37 is offline
Default Re: [Article] Pseudo Random Distribution
Did you find this post helpful? Yes | No

can u pm me it then?

Also as long as its not a bug or something you can abuse in game I believe it can be posted on this forum.
__________________
You can call me LEMONS
  Reply With Quote
Old 03-12-2010, 03:00 PM   #31
3DM@rk
Member
 
Join Date: Jun 2009
Location: CZ
Posts: 676
3DM@rk is offline
Default Re: [Article] Pseudo Random Distribution
Did you find this post helpful? Yes | No

Quote:
Originally Posted by rigadri View Post
I used every posibble way but reverse engineering (not sure about forum rules in here )
Let me remind you that Warcraft III EULA forbids you to reverse engineer, derive source code, modify, disassemble, decompile or create a source code equivalent to that of the software.

And even if you somehow get to the C values that are actually used, I don't think they'll be much different from those stated in this article.

Whether missing an attack affects the PRD counter can be confirmed quite easily, it's just a matter of creating a testmap.
__________________
  Reply With Quote
Old 03-12-2010, 08:55 PM   #32
rigadri
Member
 
Join Date: Oct 2009
Posts: 37
rigadri is offline
Default Re: [Article] Pseudo Random Distribution
Did you find this post helpful? Yes | No

3DM@rk
If u think about it, big % of advanced mechanics forum violets wc3's EULA including this thread which is ok since its purpose is informative and noone can heavy profit from this info.

Adra

Here is complete list of Cs

Code:
5%  3b79096c 0.003800000064074993
10% 3c70d845 0.014700000174343586
15% 3d03126f 0.03200000151991844
20% 3d600d1c 0.05470000207424164
25% 3da7bb30 0.08190000057220459
30% 3de69ad4 0.11259999871253967
35% 3e159b3d 0.1460999995470047
40% 3e39db23 0.18150000274181366
45% 3e5fa440 0.2184000015258789
50% 3e832ca5 0.25619998574256897
55% 3e973190 0.2953000068664551
60% 3eaaa64c 0.33329999446868896
65% 3ec19653 0.3781000077724457
70% 3ed73190 0.4203000068664551
75% 3eebe0df 0.46070000529289246
80% 3f000000 0.5
85% 3f147454 0.5799000263214111
90% 3f2aa64c 0.6665999889373779
95% 3f45460b 0.7706000208854675
  Reply With Quote
Old 03-12-2010, 11:43 PM   #33
3DM@rk
Member
 
Join Date: Jun 2009
Location: CZ
Posts: 676
3DM@rk is offline
Default Re: [Article] Pseudo Random Distribution
Did you find this post helpful? Yes | No

Quote:
Originally Posted by rigadri View Post
3DM@rk
If u think about it, big % of advanced mechanics forum violets wc3's EULA including this thread which is ok since its purpose is informative and noone can heavy profit from this info.
How exactly does any thread in Advanced Mechanics violate Warcraft EULA? Creating a testmap or reading the JASS code of another map is very different from disassembling the game itself.

Edit: nice job finding those values, though...
__________________
  Reply With Quote
Last edited by 3DM@rk; 03-12-2010 at 11:49 PM.
Old 03-13-2010, 12:06 AM   #34
rigadri
Member
 
Join Date: Oct 2009
Posts: 37
rigadri is offline
Default Re: [Article] Pseudo Random Distribution
Did you find this post helpful? Yes | No

Quote:
Originally Posted by 3DM@rk View Post
How exactly does any thread in Advanced Mechanics violate Warcraft EULA? Creating a testmap or reading the JASS code of another map is very different from disassembling the game itself.
Method of reversing is not important. Ofc ur kinda unlimited with disassembling but as long as provided info does not show u how could u exploit something it;s fine imo

e: thx!
  Reply With Quote
Old 03-14-2010, 04:07 AM   #35
Adra
Member
 
Join Date: Jun 2009
Posts: 42
Adra is offline
Default Re: [Article] Pseudo Random Distribution
Did you find this post helpful? Yes | No

Well, we weren't off by much. Most experimental values differed from the actual values by less than a percent, although my numbers for 20-30% were off by a bit more. For 10, 20, and 25%, the change is enough to increase Max N by one. The new table should therefore look like this:
P(E)Ideal CActual CMax NActual P
5%0.003800.003800000064074992635.00%
10%0.014750.01470000017434350689.98%
15%0.032220.032000001519918403114.95%
20%0.055700.054700002074241601819.81%
25%0.084740.081900000572204501224.55%
30%0.118950.11259999871253900829.12%
35%0.157980.14609999954700400633.54%
40%0.201550.18150000274181300537.76%
45%0.249310.21840000152587800441.79%
50%0.302100.25619998574256800345.65%
55%0.360400.29530000686645500349.36%
60%0.422650.33329999446868800352.94%
65%0.481130.37810000777244500256.39%
70%0.571430.42030000686645500259.80%
75%0.666670.46070000529289200263.22%
80%0.750000.50000000000000000166.67%
85%0.823530.57990002632141100170.42%
90%0.888890.66659998893737700175.00%
95%0.947370.77060002088546700181.34%
Cano's spreadsheet was used for the actual probabilities. All but 5 of the values were lower than the ones calculated from testmaps, so considering that the values were already too low to begin with, the differences between stated probabilities and actual ones are even more pronounced.

In a past thread (http://www.playdota.com/forums/11900...h-ranged-unit/), Clogon found that when a ranged unit has multiple PRD-based skills (Crit and Orb of Slow) and both procced on the same attack, the Crit would override and the Orb's proc would be "saved" till the next attack, as long as the chain of attacks wasn't interrupted. Have you seen a mechanism for this in the code?
  Reply With Quote
Last edited by Adra; 03-14-2010 at 10:05 AM.
Old 03-14-2010, 03:58 PM   #36
Cáno
Member
 
Cáno's Avatar
 
Join Date: Jul 2009
Location: Kraków, Poland
Posts: 4,132
Cáno is offline
Default Re: [Article] Pseudo Random Distribution
Did you find this post helpful? Yes | No

P(E) Ideal C Blizzard's C Test based CBlizzard's P
5% 0.00380 0.0038 0.003805.00%
10% 0.01475 0.0147 0.014759.98%
15% 0.03222 0.0320 0.0322114.95%
20% 0.05570 0.0547 0.05570 19.81%
25% 0.08474 0.0819 0.08475 24.55%
30% 0.11895 0.1126 0.11895 29.12%
35% 0.15798 0.1461 0.1462833.54%
40% 0.20155 0.1815 0.18128 37.76%
45% 0.24931 0.2184 0.21867 41.79%
50% 0.30210 0.2562 0.2570145.65%
55% 0.36040 0.2953 0.2950949.36%
60% 0.42265 0.3333 0.3332452.94%
65% 0.48113 0.3781 0.3810956.39%
70% 0.57143 0.4203 0.4244859.80%
75% 0.66667 0.4607 0.4613463.22%
80% 0.75000 0.5000 0.5027666.67%
85% 0.82353 0.5799 0.5791070.42%
90% 0.88889 0.6666 0.6706875.00%
95% 0.94737 0.7706 0.7704181.34%

A little comparison between the mathematically derived values, the Blizzard's values and test based values.

Interesting thing is that Blizzard's C values can be rounded to 4 digits with negligible rounding error.

Also, note the values for 60%, 80% and 90%. It makes me wonder what formula was used to obtain these values.

What is the actual C and P for a probability of 100%?

Edit: v So it is consistent with my calculations! :D
  Reply With Quote
Last edited by Cáno; 03-14-2010 at 08:22 PM.
Old 03-14-2010, 07:57 PM   #37
rigadri
Member
 
Join Date: Oct 2009
Posts: 37
rigadri is offline
Default Re: [Article] Pseudo Random Distribution
Did you find this post helpful? Yes | No

^for 100% is 1.0
  Reply With Quote
Old 05-17-2010, 04:32 PM   #38
SN0W37
Member
 
SN0W37's Avatar
 
Join Date: Mar 2010
Location: Everywhere \:D/
Posts: 1,399
Blog Entries: 1
SN0W37 is offline
Default Re: [Article] Pseudo Random Distribution
Did you find this post helpful? Yes | No

Hmmm I just noticed that evasion does not use PRD, does this mean that the chance to miss on evasion is then truely random or does it use some other system?
__________________
You can call me LEM0NS

( `-') ('-´ )

Quote:
Originally Posted by Foede View Post
Heath Ledger is dead.
  Reply With Quote
Old 05-17-2010, 06:34 PM   #39
pencilgod
Member
 
pencilgod's Avatar
 
Join Date: Oct 2009
Location: Hungary
Posts: 258
pencilgod is offline
Default Re: [Article] Pseudo Random Distribution
Did you find this post helpful? Yes | No

Quote:
Originally Posted by SN0W37 View Post
Hmmm I just noticed that evasion does not use PRD, does this mean that the chance to miss on evasion is then truely random or does it use some other system?
True random is not possible with computers without some outerior source iirc.
__________________
Quote:
Originally Posted by Daemon View Post
well i would say techies.... but that would make me a muslim terrorist.
  Reply With Quote
Old 05-17-2010, 07:54 PM   #40
Cheaterhater
Member
 
Cheaterhater's Avatar
 
Join Date: Sep 2009
Location: GetUnitLoc(udg_Cheaterhater)
Posts: 1,720
Blog Entries: 3
Cheaterhater is offline
Default Re: [Article] Pseudo Random Distribution
Did you find this post helpful? Yes | No

Quote:
Originally Posted by pencilgod View Post
True random is not possible with computers without some outerior source iirc.
I'm pretty sure he meant normal pseudo random numbers, which don't use any weird formula to correct the values
However, it's not even proved if true randomness actually exists ^^
__________________
  Reply With Quote
Reply
  Defense of the Ancients Advanced Mechanics Advanced Mechanics Guides


Forum Jump

Thread Tools