Ich habe auf der Klasse Random einige Tests getan, und ich habe den folgenden Code verwendet:Wie zufällig ist Random.Next()?
while (x++ <= 5000000)
{
y = rnd.Next(1, 5000000);
if (!data.Contains(y))
data.Add(y);
else
{
Console.WriteLine("Cycle {2}: Repetation found for number {0} after {1} iteration", y, x, i);
break;
}
}
ich die RND max Grenze (dh 5.000.000) gehalten zu ändern und ich die Anzahl der Iterationen geändert, und ich bekam die folgende Ergebnis:
1) if y = rnd.Next(1, 5000) : The average is between 80 to 110 iterations
2) if y = rnd.Next(1, 5000000) : The average is between 2000 to 4000 iterations
3) if y = rnd.Next(1, int.MaxValue) : The average is between 40,000 to 80,000 iterations.
Warum bin ich diese Mittelwerte bekommen, also von 10 mal ich für jeden Wert überprüft, 80% der Zeit bekomme ich innerhalb dieser durchschnittlichen Bereich. Ich denke, wir können es nicht annähernd Zufall nennen.
Was kann ich tun, um eine ziemlich zufällige Zahl zu erhalten?
Es wird aus einem Grund Pseudozufalls genannt. –
Zufall bedeutet nicht "einzigartig". – nos
Herzlichen Glückwunsch zur Entdeckung des Geburtstagsparadoxons. (http://en.wikipedia.org/wiki/Birthday_problem) – kennytm