0Pricing
C++ Academy · Leçon

Nombres aléatoires avec l’en-tête random

Générer des nombres aléatoires de qualité avec des moteurs et des distributions modernes

Nombres aléatoires avec l’en-tête random est une leçon C++ Academy gratuite sur CoddyKit. Ceci est la leçon 3 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage C++ Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours C++ Academy comprend 4 leçons au total.

Pourquoi pas rand() ?

La fonction C historique std::rand() utilise un état global, offre une qualité statistique médiocre et n’est pas sûre pour les threads. Le C++ moderne fournit de bien meilleurs outils dans <random>.

La recette en trois éléments

Les nombres aléatoires en C++ moderne reposent sur trois éléments :

  • Une source de graine (entropie véritable)
  • Un moteur générateur (état déterministe)
  • Une distribution (qui façonne la sortie)

Initialisation avec random_device

std::random_device échantillonne une véritable entropie du OS — mais cela peut être lent. Utilisez-le une fois pour initialiser un moteur rapide.

#include <random>
std::random_device rd;
std::mt19937 engine(rd());

Le moteur mt19937

std::mt19937 (Mersenne Twister) est un moteur pseudo-aléatoire rapide offrant une excellente qualité statistique. C’est le choix par défaut pour la plupart des applications.

Distribution uniforme d’entiers

Produit des entiers distribués uniformément dans un intervalle fermé.

std::uniform_int_distribution<int> dice(1, 6);
int roll = dice(engine);

Distribution uniforme de réels

Pour les nombres à virgule flottante dans un intervalle semi-ouvert [a, b).

std::uniform_real_distribution<double> dist(0.0, 1.0);
double x = dist(engine);

Distribution normale (gaussienne)

Pour des nombres aléatoires selon une courbe en cloche — courants dans les simulations et l’apprentissage automatique.

std::normal_distribution<double> norm(0.0, 1.0); // mean 0, stddev 1
double x = norm(engine);

Autres distributions

La bibliothèque en inclut beaucoup d’autres : bernoulli_distribution, poisson_distribution, exponential_distribution, discrete_distribution, et bien d’autres.

Aléatoire reproductible

Pour les tests, initialisez le moteur avec une valeur fixe afin d’obtenir la même séquence à chaque exécution.

std::mt19937 engine(42);
// Same output every time you run the program

Mélange aléatoire

Mélangez un conteneur avec std::shuffle, qui accepte n’importe quel moteur.

#include <algorithm>
std::vector<int> v = {1,2,3,4,5};
std::shuffle(v.begin(), v.end(), engine);

Piège : réinitialiser dans une boucle

Ne créez pas un nouveau random_device ou moteur pour chaque nombre aléatoire. Construisez un moteur et réutilisez-le lors des différents appels.

Vérification rapide

Quelle est la manière moderne la plus sûre d’initialiser un moteur pseudo-aléatoire en C++ ?

Récapitulatif

L’aléatoire en C++ moderne utilise random_device pour l’initialisation, mt19937 comme moteur et une distribution comme uniform_int_distribution pour façonner la sortie. Réutilisez le moteur — n’en créez jamais un par appel.

Questions Fréquemment Posées

La leçon « Nombres aléatoires avec l’en-tête random » est-elle gratuite ?

Oui — le texte complet de « Nombres aléatoires avec l’en-tête random » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours C++ Academy, passe à CoddyKit PRO. Le cours C++ Academy comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « Nombres aléatoires avec l’en-tête random » ?

Générer des nombres aléatoires de qualité avec des moteurs et des distributions modernes Tu pratiques C++ Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer C++ Academy ?

Aucune expérience préalable n'est requise. C++ Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 3 sur 4.

Combien de temps prend la leçon « Nombres aléatoires avec l’en-tête random » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon C++ Academy ?

Oui. Chaque leçon C++ Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Types entiers et à virgule flottante
  2. L’en-tête cmath : pow, sqrt, abs, round
  3. Nombres aléatoires avec l’en-tête random
  4. Limites numériques et comportement en cas de dépassement
← Retour à C++ Academy