attenzione: se si sta generando il random
all'interno di un ciclo, come per esempio for(int i = 0; i < 10; i++)
, non mettere la dichiarazione new Random()
all'interno del ciclo.
Da MSDN:
I generazione di numeri casuali inizia da un valore di inizializzazione. Se lo stesso seme viene utilizzato ripetutamente, viene generata la stessa serie di numeri. Un modo per produrre sequenze diverse consiste nel rendere il valore seme dipendente dal tempo, producendo così una serie diversa con ogni nuova istanza di Random di . Per impostazione predefinita, il costruttore senza parametri della classe Random utilizza l'orologio di sistema per generare il valore del seme ...
Quindi, sulla base di questo fatto, fare qualcosa come:
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));
}
In questo modo si avere la garanzia che otterrai diversi valori doppi.
fonte
2014-04-10 15:37:01
Basta guardare fuori se si chiama GetRandomNumber() in un ciclo in quanto genererà lo stesso valore più e più volte –
@ John - Buon punto, ho aggiunto questo alla mia risposta. – Michael
perfetto! questo è quello che stavo cercando. Grazie mille – CodeLikeBeaker