Comment puis-je produire des nombres aléatoires dans une plage?
267
Tu peux essayer
Random r = new Random();
int rInt = r.Next(0, 100); //for ints
int range = 100;
double rDouble = r.NextDouble()* range; //for doubles
Jettes un coup d'oeil à
Classe aléatoire , méthode Random.Next (Int32, Int32) et méthode Random.NextDouble
double rDouble = (r.NextDouble()*2)-1.0;
Random()
utilise une graine dépendante du temps, mais l'écrire explicitement est préférable pour la lisibilité.Essayez le code ci-dessous.
la source
Quelque chose comme:
la source
DateTime.Now.Millisecond
?Random
est déjà prédéfini avec une valeur système etMillisecond
n'est qu'un nombre compris entre 0 et 999. Si cette paire de lignes était toujours ensemble dans le code, il n'y aurait que 1000 valeurs possibles enrnd.Next
raison de la réinitialisation de l'amorce à chaque fois. Même graine entrée, même nombre aléatoire sorti. Je laisserais de côté la graine manuelle.Environment.TickCount
.Utilisation:
la source
Pour les futurs lecteurs, si vous souhaitez un nombre aléatoire dans une plage, utilisez le code suivant:
C # Double aléatoire entre min et max
Exemple de code
la source
return new Random().NextDouble() * (maxNumber - minNumber) + minNumber;
Mis à part la classe aléatoire , qui génère des entiers et des doubles, considérez:
Stack Overflow question Génération de valeurs (pseudo) aléatoires contraintes de (U) Int64 et Decimal
Classe C # RandomProvider
la source
Voici la version mise à jour de la réponse de Darrelk . Il est implémenté à l'aide de méthodes d'extension C # . Il n'alloue pas de mémoire ( nouveau Random () ) chaque fois que cette méthode est appelée.
Utilisation (assurez-vous d'importer l'espace de noms qui contient la classe RandomExtensionMethods):
la source