user
Comment tirer un nombre aléatoire en C ?
alphonsio

Pour tirer un nombre aléatoire en C, la fonction int rand() permet de tirer un entier pseudo-aléatoire entre 0 et RAND_MAX inclus. RAND_MAX est une constante définie dans la bibliothèque stdlib.h, sa valeur peut varier d'un compilateur à l'autre.

Voici un exemple de programme en C qui génère un nombre aléatoire entre 0 et RAND_MAX :

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main() {
    // Initialiser le générateur de nombres aléatoires avec l'heure actuelle
    srand(time(NULL));

    // Générer un nombre aléatoire
    int random_number = rand();

    // Afficher le nombre aléatoire
    printf("Nombre aléatoire : %d\n", random_number);

    return 0;
}

Explications :

  1. #include <stdlib.h> : Cette directive inclut les déclarations de rand() et srand().
  2. #include <time.h> : Cette directive inclut la déclaration de time(), utilisée pour obtenir l'heure actuelle.
  3. srand(time(NULL)) : Initialise le générateur de nombres aléatoires avec une graine basée sur l'heure actuelle. Cela permet de s'assurer que les nombres générés seront différents à chaque exécution du programme.
  4. rand() : Génère un nombre entier pseudo-aléatoire entre 0 et RAND_MAX.

Pour générer un nombre dans une plage spécifique

Pour obtenir un nombre aléatoire dans une plage spécifique, par exemple entre min et max, la formule suivante est classiquement utilisée :

int min = 10;
int max = 50;
int random_number = (rand() % (max - min + 1)) + min;

Voici le programme complet avec cette modification :

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main() {
    // Initialiser le générateur de nombres aléatoires avec l'heure actuelle
    srand(time(NULL));

    // Définir la plage des nombres aléatoires
    int min = 10;
    int max = 50;

    // Générer un nombre aléatoire dans la plage [min, max]
    int random_number = (rand() % (max - min + 1)) + min;

    // Afficher le nombre aléatoire
    printf("Nombre aléatoire entre %d et %d : %d\n", min, max, random_number);

    return 0;
}

Explications supplémentaires :

  • rand() % (max - min + 1) : Cette expression génère un nombre aléatoire entre 0 et (max - min).
  • + min : Cette partie ajuste le résultat pour qu'il soit dans la plage souhaitée [min, max].

Ces exemples te montrent comment générer des nombres aléatoires en C, à la fois dans une plage spécifique et dans toute la plage possible des nombres entiers retournés par rand().