attention: si vous générez la random
dans une boucle comme par exemple for(int i = 0; i < 10; i++)
, ne mettez pas la déclaration new Random()
dans la boucle.
De MSDN:
la génération de nombres aléatoires commence à partir d'une valeur de départ. Si la même graine est utilisée à plusieurs reprises, la même série de nombres est générée. Une façon de produire différentes séquences est de faire en sorte que la valeur de départ dépende du temps, produisant ainsi une série différente avec chaque nouvelle instance de Random. Par défaut, le constructeur parameterless de la classe aléatoire utilise l'horloge système pour générer sa valeur de départ ...
donc basée sur ce fait, faire quelque chose comme:
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));
}
Faire de cette façon vous avoir la garantie que vous aurez différentes valeurs doubles.
Il suffit de regarder si vous appelez GetRandomNumber() dans une boucle comme il va générer la même valeur à plusieurs reprises –
@John - Bon point, j'ai ajouté ceci à ma réponse. – Michael
parfait! C'est ce que je cherchais. Merci beaucoup – CodeLikeBeaker