que he estado haciendo algunas pruebas en la clase aleatoria y he utilizado el siguiente código:¿Qué tan aleatorio es 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;
}
}
Seguí cambiando el límite rnd máximo (es decir, 5000000) y me ha cambiado el número de iteraciones y me dio la siguiente resultado:
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.
¿por qué recibo estos promedios, es decir, de cada 10 veces que he marcado para cada valor, el 80% de las veces me sale dentro de este rango promedio. No creo que podamos llamarlo casi aleatorio.
¿Qué puedo hacer para obtener un número bastante aleatorio?
Se llama pseudoaleatorio por un motivo. –
aleatorio no significa 'único'. – nos
Felicidades por descubrir la paradoja del cumpleaños. (http://en.wikipedia.org/wiki/Birthday_problem) – kennytm