19.11.2009, 20:53
Quote:
Originally Posted by Tannz0rz
In this case, speed honestly shouldn't be a reason as to why you wouldn't want to use this. The randoms with Mersenne are, pardon my lack of words, more "random", while the pawn-generated version is a tad bit sad.
|

I did a small code to compare probabilities of each functions:
pawn Code:
#define TESTS 20 //How many times to reproduce the test
#define CALLS 3 //How many function calls
#define MAX 3 //Numbers from 0 to MAX (not included)
//Obviously..
#if CALLS < MAX
#undef CALLS
#define CALLS MAX
#endif
pawn Code:
new a[MAX][2], i, j;
public OnFilterScriptInit()
{
for (i = 0; i < TESTS; i++)
{
for (j = 0; j < CALLS; j++)
{
a[ random(MAX) ][0]++;
a[ MRandom(MAX-1) ][1]++;
}
for (j = 0; j < MAX; j++)
{
printf("Probability of %4d -> random: %3.2f%% - MRandom: %3.2f%%",j, (a[j][0]/CALLS.0)*100,(a[j][1]/CALLS.0)*100);
a[j][0] = 0;
a[j][1] = 0;
}
print(" ");
}
}
Code:
Probability of 0 -> random: 33.33% - MRandom: 33.33% Probability of 1 -> random: 0.00% - MRandom: 33.33% Probability of 2 -> random: 66.66% - MRandom: 33.33% Probability of 0 -> random: 0.00% - MRandom: 66.66% Probability of 1 -> random: 100.00% - MRandom: 0.00% Probability of 2 -> random: 0.00% - MRandom: 33.33% Probability of 0 -> random: 100.00% - MRandom: 33.33% Probability of 1 -> random: 0.00% - MRandom: 33.33% Probability of 2 -> random: 0.00% - MRandom: 33.33% Probability of 0 -> random: 33.33% - MRandom: 33.33% Probability of 1 -> random: 33.33% - MRandom: 66.66% Probability of 2 -> random: 33.33% - MRandom: 0.00% Probability of 0 -> random: 33.33% - MRandom: 66.66% Probability of 1 -> random: 0.00% - MRandom: 33.33% Probability of 2 -> random: 66.66% - MRandom: 0.00% Probability of 0 -> random: 0.00% - MRandom: 66.66% Probability of 1 -> random: 33.33% - MRandom: 0.00% Probability of 2 -> random: 66.66% - MRandom: 33.33% Probability of 0 -> random: 66.66% - MRandom: 66.66% Probability of 1 -> random: 0.00% - MRandom: 0.00% Probability of 2 -> random: 33.33% - MRandom: 33.33% Probability of 0 -> random: 0.00% - MRandom: 33.33% Probability of 1 -> random: 33.33% - MRandom: 0.00% Probability of 2 -> random: 66.66% - MRandom: 66.66% Probability of 0 -> random: 33.33% - MRandom: 33.33% Probability of 1 -> random: 33.33% - MRandom: 0.00% Probability of 2 -> random: 33.33% - MRandom: 66.66% Probability of 0 -> random: 0.00% - MRandom: 66.66% Probability of 1 -> random: 66.66% - MRandom: 33.33% Probability of 2 -> random: 33.33% - MRandom: 0.00% Probability of 0 -> random: 0.00% - MRandom: 100.00% Probability of 1 -> random: 66.66% - MRandom: 0.00% Probability of 2 -> random: 33.33% - MRandom: 0.00% Probability of 0 -> random: 66.66% - MRandom: 33.33% Probability of 1 -> random: 0.00% - MRandom: 0.00% Probability of 2 -> random: 33.33% - MRandom: 66.66% Probability of 0 -> random: 33.33% - MRandom: 0.00% Probability of 1 -> random: 33.33% - MRandom: 33.33% Probability of 2 -> random: 33.33% - MRandom: 66.66% Probability of 0 -> random: 66.66% - MRandom: 0.00% Probability of 1 -> random: 33.33% - MRandom: 100.00% Probability of 2 -> random: 0.00% - MRandom: 0.00% Probability of 0 -> random: 33.33% - MRandom: 0.00% Probability of 1 -> random: 33.33% - MRandom: 33.33% Probability of 2 -> random: 33.33% - MRandom: 66.66% Probability of 0 -> random: 100.00% - MRandom: 33.33% Probability of 1 -> random: 0.00% - MRandom: 66.66% Probability of 2 -> random: 0.00% - MRandom: 0.00% Probability of 0 -> random: 66.66% - MRandom: 0.00% Probability of 1 -> random: 0.00% - MRandom: 0.00% Probability of 2 -> random: 33.33% - MRandom: 100.00% Probability of 0 -> random: 33.33% - MRandom: 33.33% Probability of 1 -> random: 33.33% - MRandom: 33.33% Probability of 2 -> random: 33.33% - MRandom: 33.33% Probability of 0 -> random: 66.66% - MRandom: 33.33% Probability of 1 -> random: 0.00% - MRandom: 33.33% Probability of 2 -> random: 33.33% - MRandom: 33.33% Probability of 0 -> random: 0.00% - MRandom: 33.33% Probability of 1 -> random: 66.66% - MRandom: 0.00% Probability of 2 -> random: 33.33% - MRandom: 66.66%
I agree that this MRandom() give sometimes more randomized numbers than random(), at least for small values, but for me it's really not worth using it.