web-dev-qa-db-fra.com

Produire un nombre aléatoire dans une plage en utilisant C #

Comment puis-je produire des nombres aléatoires dans une plage?

230
RoR

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

371
Adriaan Stander

Essayez ci-dessous le code.

Random rnd = new Random();
int month = rnd.Next(1, 13); // creates a number between 1 and 12
int dice = rnd.Next(1, 7); // creates a number between 1 and 6
int card = rnd.Next(52); // creates a number between 0 and 51
33
Vishal Kiri

Quelque chose comme:

var rnd = new Random(DateTime.Now.Millisecond);
int ticks = rnd.Next(0, 3000);
31
ozczecho

Utilisation:

Random r = new Random();
 int x= r.Next(10);//Max range
11
Kay

Pour les futurs lecteurs, si vous souhaitez un nombre aléatoire dans une plage, utilisez le code suivant:

public double GetRandomNumberInRange(double minNumber, double maxNumber)
{
    return new Random().NextDouble() * (maxNumber - minNumber) + minNumber;
}

C # Double aléatoire entre min et max

exemple de code

6
Darrelk

Outre le Random Class , qui génère des entiers et des doubles, prenez en compte:

3
Ohad Schneider

Voici la version mise à jour de réponse Darrelk . Il est implémenté en utilisant méthodes d'extension C # . Il n'alloue pas de mémoire ( new Random () ) chaque fois que cette méthode est appelée.

public static class RandomExtensionMethods
{
    public static double NextDoubleRange(this System.Random random, double minNumber, double maxNumber)
    {
        return random.NextDouble() * (maxNumber - minNumber) + minNumber;
    }
}

Utilisation (assurez-vous d'importer l'espace de noms contenant la classe RandomExtensionMethods):

var random = new System.Random();
double rx = random.NextDoubleRange(0.0, 1.0);
double ry = random.NextDoubleRange(0.0f, 1.0f);
double vx = random.NextDoubleRange(-0.005f, 0.005f);
double vy = random.NextDoubleRange(-0.005f, 0.005f);
0