Aller au contenu

Fiche Random() : Générer de l’aléatoire


Introduction

En C#, on peut générer des nombres aléatoires grâce à la classe Random.
C’est utile par exemple pour simuler un dé, choisir un élément au hasard, ou créer un petit jeu.


Créer un générateur

// Création d’un générateur aléatoire
Random aleatoire = new Random();

Générer des entiers

Exemple 1 : un entier positif

int nombre = aleatoire.Next();
Console.WriteLine(nombre); // par exemple 135792468

Exemple 2 : un entier entre 0 et un maximum

int nombre = aleatoire.Next(10);
Console.WriteLine(nombre); // un nombre entre 0 et 9

Exemple 3 : un entier entre deux bornes

int nombre = aleatoire.Next(1, 7);
Console.WriteLine(nombre); // un nombre entre 1 et 6

⚠️ Attention : la borne du haut est exclue.
Ici Next(1, 7) donne 1,2,3,4,5 ou 6 (jamais 7).


Générer des nombres réels

double reel = aleatoire.NextDouble();
Console.WriteLine(reel); // un nombre entre 0.0 et 1.0

Exemples pratiques

Lancer de dé

Random aleatoire = new Random();
int de = aleatoire.Next(1, 7);
Console.WriteLine("Résultat du dé : " + de);

Tirer pile ou face

Random aleatoire = new Random();
int tirage = aleatoire.Next(2); // 0 ou 1

if (tirage == 0)
    Console.WriteLine("Pile");
else
    Console.WriteLine("Face");

Exercices

Exercice : Loterie simple

Écrire un programme qui tire 6 numéros distincts entre 1 et 49, comme dans un tirage de loterie.

Solution
    static void Main()
    {
        int maxShoots = 6;    // nombre de numéros à tirer
        int maxLotoSupp = 50; // nombre max de numéros (1 à 49)

        int randomValue;      // valeur aléatoire

        Random oRand = new Random();

        Console.WriteLine("Numéros tirés :");

        for (int i = 0; i < maxShoots; i++)
        {
            randomValue = oRand.Next(1, 50); // entre 1 et 49
            Console.Write(randomValue + " ");
        }

        Console.ReadKey();
    }

Remarque

Avec ce programme, il est possible qu’un même numéro sorte plusieurs fois (exemple : 7 12 7 34 49 12). Pour éviter les doublons, il faudrait stocker les numéros déjà tirés et vérifier avant d’en ajouter un nouveau. 👉 Cela sera possible plus tard quand on aura vu les tableaux ou les listes.


À retenir

  • new Random() crée un générateur.
  • Next() donne un entier aléatoire.
  • Next(max) donne un entier entre 0 et max - 1.
  • Next(min, max) donne un entier entre min et max - 1.
  • NextDouble() donne un nombre réel entre 0.0 et 1.0.

Pour aller plus loin