posibles duplicados:
c# - getting the same random number repeatedly
Random number generator not working the way I had planned (C#)generación de números aleatorios - Mismo número devuelto
Tengo un método que se basa una cola de enteros:
public Queue<int> generateTrainingInts(int count = 60)
{
Queue<int> retval = new Queue<int>();
for (int i = 0; i < count; i++)
{
retval.Enqueue(JE_Rand.rInt(2001, 100));
}
return retval;
}
JE_Rand .rInt() es solo una función que delegat es una función de la clase Random:
public static int rInt(int exclUB, int incLB = 0)
{
Random rand = new Random(DateTime.Now.Millisecond);
int t = rand.Next(incLB, exclUB);
rand = null;
return t;
}
Pero cuando llamo generateTrainingInts, el mismo número está en cola cada vez. Sin embargo, si cambio rInt para usar una instancia estática de la clase Random, en lugar de una instancia local (con el alcance de la función como se definió anteriormente), parece que funciona correctamente (encola los enteros aleatorios). ¿Sabe alguien por que ha ocurrido esto?
Edit: Estimados que respondieron que no leyeron completamente mi pregunta, Como algunos de ustedes señalaron, estoy buscando una buena explicación de por qué sucede esto. No busco una solución al problema generado por el mismo número, porque ya lo arreglé como dije antes. Sin embargo, gracias por su entusiasmo :) Realmente solo quiero entender cosas como esta, porque mi primera implementación tuvo más sentido conceptual para mí.
Parece duplicado ... Mira preguntas realted como -http: //stackoverflow.com/questions/1437825/random-number-generation-in-c –
Esto sucede porque el objeto 'Random' se inicia a partir 'Medio ambiente.GetTickCount', que es un temporizador de milisegundos. Entonces, si llamas al constructor 'Random' dos veces en el mismo milisegundo, obtendrás el mismo valor inicial. –
Cuando Rand se crea una instancia con la misma semilla (por ejemplo, DateTime.Now.Millisecond en su caso), devolverá las mismas secuencias de valores. Debe crear una instancia una vez (y almacenarlo en una variable estática), o con diferentes semillas en cada momento. – AFract