Duplicar posibles:
System.Random keeps on returning the same valueC# Random.Next de repente deja de devolver valores aleatorios
Estoy refactorización y la expansión de un pequeño modelo de C# basado en agentes para ayudar a algunos profesores de biología predicen la propagación de una enfermedad. Cada año de la simulación, cada agente individual viaja al azar a un nodo poblacional cercano, posiblemente diseminando la enfermedad. Soy nuevo en C#, pero he leído sobre posibles problemas con Random. Luego devuelvo el mismo valor si se reinicializa con la misma hora del sistema. Para evitar esto, he creado una instancia estática a la que se hace referencia para cada nuevo valor aleatorio.
Los detalles:
En mis esfuerzos para ampliar el modelo que he cambiado para calcular la información de "viaje" para cada nodo de la población en paralelo. Al probar el modelo noté que en la nueva versión la enfermedad no se extendería más allá del primer año. La investigación adicional redujo el problema al viaje entre nodos. Después del primer año, todos los agentes permanecieron inmóviles. Examiné la función responsable de su viaje y descubrí que funciona creando una lista de todos los nodos cercanos, generando un número aleatorio < = el número de elementos en la lista, y viajando a listOfNearbyNodes [myRandomNumber].
El problema:
que luego añadió un comunicado de impresión para dar salida al valor del índice al azar para cada iteración. Descubrí que todo el modelo funciona exactamente como se esperaba para el primer año de la simulación, con los números aleatorios generados en un rango aceptable. Sin embargo, después de que termina el primer año y los bucles de simulación, el mismo código solo arrojará un índice "aleatorio" de 0. Cada hilo, cada iteración, cada nodo, cada agente, siempre 0. Como el nodo actual de un agente siempre está el primer elemento en la lista los agentes nunca se mueven de nuevo.
Pensé que esta podría ser otra manifestación del error de inicialización del sistema, así que he intentado tres formas diferentes de implementar un objeto aleatorio estático, pero no ayuda. Cada vez que ejecuto la simulación, el primer año siempre funciona correctamente y luego Random.Next() comienza a devolver solamente 0.
¿Alguien tiene ideas sobre dónde debo buscar el siguiente error? ¡Gracias!
Un ejemplo de código breve pero completo que reproduce el error sería útil tanto para usted como para la comunidad SO para ayudarlo a diagnosticar el problema. – LBushkin
Hice una pregunta que creo que está relacionada y puede ayudar: http://stackoverflow.com/questions/2924599/parallel-loops-and-random-produce-odd-results – Mathias
Duplicate of [System.Random sigue repitiendo el mismo valor] (http://stackoverflow.com/questions/295900/system-random-keeps-on-returning-the-same-value). –