Originally Posted by mutagen
Blizzard has stated that they use the IBAA PRNG.
|
Blah Cookie expire too quickly. Haha had a page long post but it got killed. Here is the toned down version:
IBAA is a decent prng from what I have read(Haven't looked at it specifically.) Hoever the devil is in the details. Several sites(casinos) have had trouble generating a number in the range. Its a pretty common mistake since its how most programmers were taught.
The above code results in a bias. There are not an equal number of numbers that are divisible.
Here is some c# code and results showing the bias:
static void Main(string[] args)
{
int[] count = new int[100];
int accum=0;
const Int64 MAX = int.MaxValue;
for (Int64 i = 0; i < MAX; i++ )
{
count[i % 100] += 1;
}
System.Console.WriteLine("Index\tNumber\tDiff");
for (int x = 0; x < count.Length; x++)
{
int diff = count[x] - count[count.Length-1];
accum += diff;
System.Console.WriteLine("{0:D}\t{1:D}\t{2:D}", x, count[x], diff);
}
Double per = (((Double)accum/(MAX)*100));
System.Console.WriteLine("Bias = {0:D}", accum);
System.Console.WriteLine("Bias = {0:F15}%", per);
System.Console.ReadLine();
}
I've only run the tests on 32 bit. It seems likely that blizzard is on 32 bits since their servers were built before 64 bit machines were common.
here are the results:

Index Number Diff
0 21474837 1
1 21474837 1
2 21474837 1
3 21474837 1
4 21474837 1
5 21474837 1
6 21474837 1
7 21474837 1
8 21474837 1
9 21474837 1
10 21474837 1
11 21474837 1
12 21474837 1
13 21474837 1
14 21474837 1
15 21474837 1
16 21474837 1
17 21474837 1
18 21474837 1
19 21474837 1
20 21474837 1
21 21474837 1
22 21474837 1
23 21474837 1
24 21474837 1
25 21474837 1
26 21474837 1
27 21474837 1
28 21474837 1
29 21474837 1
30 21474837 1
31 21474837 1
32 21474837 1
33 21474837 1
34 21474837 1
35 21474837 1
36 21474837 1
37 21474837 1
38 21474837 1
39 21474837 1
40 21474837 1
41 21474837 1
42 21474837 1
43 21474837 1
44 21474837 1
45 21474837 1
46 21474837 1
47 21474836 0
48 21474836 0
49 21474836 0
50 21474836 0
51 21474836 0
52 21474836 0
53 21474836 0
54 21474836 0
55 21474836 0
56 21474836 0
57 21474836 0
58 21474836 0
59 21474836 0
60 21474836 0
61 21474836 0
62 21474836 0
63 21474836 0
64 21474836 0
65 21474836 0
66 21474836 0
67 21474836 0
68 21474836 0
69 21474836 0
70 21474836 0
71 21474836 0
72 21474836 0
73 21474836 0
74 21474836 0
75 21474836 0
76 21474836 0
77 21474836 0
78 21474836 0
79 21474836 0
80 21474836 0
81 21474836 0
82 21474836 0
83 21474836 0
84 21474836 0
85 21474836 0
86 21474836 0
87 21474836 0
88 21474836 0
89 21474836 0
90 21474836 0
91 21474836 0
92 21474836 0
93 21474836 0
94 21474836 0
95 21474836 0
96 21474836 0
97 21474836 0
98 21474836 0
99 21474836 0
Bias = 47
Bias = 0.000002188608051%
For PVE:
So assuming that you have 14 dps classes doing 500 swings/spells per boss fight. (Proably a little low number for rogues and high for mages/locks but just an extimate) There is a ~.0774% chance that your raid should have done more damage.
Not all that high but it starts to add up.
PVP:
Apply this to all procs, dispells, and damge spells done, and you can see that there is some posibility that its affected the outcome of an arena.
Big caveat is that this is all naptkin math and not really sure they aren't doing it right.
Aditionally after reading more it looks like ibaa is prone to small cycles(at least the realier versions) so streaks are possible.