Tenga cuidado: si se está generando la random
dentro de un bucle como por ejemplo for(int i = 0; i < 10; i++)
, no ponga la declaración new Random()
dentro del bucle.
De MSDN:
Las aleatorios de generación de números comienza a partir de un valor de semilla. Si se usa la misma semilla repetidamente, se genera la misma serie de números. Una forma de producir secuencias diferentes es hacer que el valor inicial dependa del tiempo, produciendo así una serie diferente con cada instancia nueva de de Random. Por defecto, el constructor sin parámetros de la clase Random utiliza el reloj del sistema para generar su valor semilla ...
Así que basado en este hecho, hacer algo como:
var random = new Random();
for(int d = 0; d < 7; d++)
{
// Actual BOE
boes.Add(new LogBOEViewModel()
{
LogDate = criteriaDate,
BOEActual = GetRandomDouble(random, 100, 1000),
BOEForecast = GetRandomDouble(random, 100, 1000)
});
}
double GetRandomDouble(Random random, double min, double max)
{
return min + (random.NextDouble() * (max - min));
}
Haciendo de esta manera usted tenga la garantía de que obtendrá diferentes valores dobles.
Sólo ten cuidado si se llama GetRandomNumber() en un bucle, ya que va a generar el mismo valor una y otra –
@ John - Buen punto, añadí esto a mi respuesta. – Michael
¡perfecto! Esto es lo que estaba buscando. Muchas gracias – CodeLikeBeaker