Skip to main content
🟢 Beginner

Générateur de nombres aléatoires

Générez des nombres aléatoires dans une plage. Parfait pour les jeux, les décisions et les statistiques. Essayez cette calculatrice mathématique en ligne gratuite pour obtenir des résultats instantanés et précis.

Qu'est-ce qu'un générateur de nombres aléatoires ?

Ungénérateur de nombres aléatoires (RNG) est un outil ou un algorithme qui produit des nombres sans aucun modèle perceptible : chaque sortie est statistiquement indépendante des sorties précédentes, chaque valeur de la plage étant également susceptible d'apparaître. Les nombres aléatoires sont fondamentaux pour les statistiques, les jeux, la cryptographie, la simulation scientifique et la programmation informatique.

Le véritable hasard provient de phénomènes physiques intrinsèquement imprévisibles : désintégration radioactive, bruit atmosphérique, bruit thermique dans les circuits électroniques ou événements tunnel quantiques. Les RNG matériels mesurent ces phénomènes pour produire des flux binaires véritablement aléatoires. Des services comme random.org récoltent le bruit atmosphérique des récepteurs radio pour fournir de véritables nombres aléatoires.

Les nombres aléatoires générés par ordinateur sont techniquementpseudo-aléatoire — ce sont des séquences déterministes qui semblent aléatoires mais sont entièrement déterminées par une valeur initiale appeléegraine. Étant donné la même graine, un générateur de nombres pseudo-aléatoires (PRNG) produit exactement la même séquence. Ceci est en fait utile pour la reproductibilité des simulations scientifiques : définissez la graine, enregistrez-la et vous pourrez reproduire vos résultats plus tard.

Comment fonctionnent les générateurs de nombres pseudo-aléatoires

Les PRNG modernes utilisent des algorithmes mathématiques pour générer des séquences dotées d'excellentes propriétés statistiques. L'algorithme le plus utilisé est leMersenne Twister (MT19937), développé par Matsumoto et Nishimura en 1997. Il a une période de 2 ^ 19937 − 1 (un nombre avec près de 6 000 chiffres) avant de se répéter, réussit tous les tests statistiques standard de caractère aléatoire et est le RNG par défaut dans Python, PHP, Ruby, R et de nombreux autres langages.

Les algorithmes les plus récents incluentxoshiro/xoroshiro (extrêmement rapide, petit état) etPCG (générateur congruentiel permuté) (excellente qualité statistique avec un petit état). Pour les applications cryptographiques, ces PRNG standard sont insuffisants : des PRNG cryptographiquement sécurisés (CSPRNG) sont nécessaires car les PRNG standard peuvent être prédits si un attaquant connaît suffisamment de sorties.

Les navigateurs Web permettent d'accéder à un CSPRNG via lecrypto.getRandomValues() API, que cette calculatrice utilise pour générer des nombres aléatoires. C'est nettement plus sécurisé queMath.random(), qui utilise un simple PRNG et ne doit jamais être utilisé pour des applications sensibles en matière de sécurité.

AlgorithmePériodeVitesseCryptographique ?Utilisé dans
Math.random()Dépend de la mise en œuvreTrès rapideNonNavigateur JS (non-crypto)
Mersenne Twister2^19937 − 1RapideNonPython, R, MATLAB
xoshiro256**2 ^ 256 − 1Très rapideNonRust, .NET, Julia
PCG-642^128RapideNonNumPy, plusieurs langues
ChaCha20RapideOuiLinux /dev/urandom, TLS
FortuneMoyenOuimacOS, iOS, Windows

Utilisations courantes des nombres aléatoires

Jeux et divertissements : Lancements de dés, mélange de cartes, génération de niveaux procéduraux, systèmes de dépôt de butin, randomisation du comportement des PNJ. Toute l'expérience des jeux roguelike (Nethack, Spelunky, Hades) dépend d'un caractère aléatoire de haute qualité qui semble juste mais imprévisible.

Loteries et tirages au sort : Sélection aléatoire des prix, des cadeaux, de la sélection du jury, des choix au repêchage et de toute répartition équitable d'une ressource limitée entre les concurrents. Une sélection véritablement aléatoire garantit l’absence de biais.

Simulation scientifique (méthodes de Monte Carlo) : Les nombres aléatoires pilotent les simulations de Monte Carlo, qui utilisent un échantillonnage aléatoire répété pour approximer des résultats mathématiques complexes. Les applications incluent l'estimation de π, la tarification des dérivés financiers, la modélisation des réactions nucléaires, les prévisions météorologiques et les études sur les interactions médicamenteuses.

Statistiques et recherche : L'échantillonnage aléatoire pour les enquêtes, l'assignation aléatoire dans les essais cliniques (essais contrôlés randomisés), la génération d'échantillons bootstrap pour les intervalles de confiance et la validation croisée dans l'apprentissage automatique nécessitent tous des nombres aléatoires.

Cryptographie et sécurité : La génération de clés pour le chiffrement, la génération de jetons de session, les défis CAPTCHA, les mots de passe à usage unique (OTP/2FA), les valeurs de sel pour le hachage de mot de passe et les noms occasionnels dans les protocoles cryptographiques nécessitent tous un caractère aléatoire de haute qualité. Un faible caractère aléatoire dans les applications cryptographiques peut être catastrophique : il a conduit à des failles de sécurité réelles.

Programmation informatique : Génération de données de test, tests de charge, fuzzing (recherche de bogues en fournissant des entrées aléatoires au logiciel), affectation de tests A/B, algorithmes de lecture aléatoire (comme la fonction « shuffle » de Spotify) et tests de simulation.

Équité et attentes statistiques

Un générateur de nombres aléatoires équitable donne à chaque valeur de la plage une probabilité égale. Pour une plage de 1 à 6 (comme un dé), chaque chiffre devrait apparaître environ 1/6 ≈ 16,67 % du temps sur plusieurs lancers. Mais à court terme, les écarts sont normaux et attendus – c’est ce que nous dit réellement la probabilité.

LeLoi des grands nombres indique qu'à mesure que le nombre d'essais augmente, les fréquences observées convergent vers les probabilités théoriques. Lancez un dé 12 fois et vous verrez peut-être {1,3,5,6,2,1,4,3,2,6,5,4} – pas exactement 2 de chaque nombre. Lancez-le 60 000 fois et vous verrez très près de 10 000 de chaque numéro. Cette convergence est garantie par la loi, mais les tendances à court terme ne le sont pas.

LeL'erreur du joueur est la croyance erronée que les résultats passés influencent les résultats futurs lors d’événements aléatoires indépendants. Obtenir 5 faces d'affilée ne rend pas pile "due". Chaque retournement est indépendant ; la pièce n'a pas de mémoire. De même, un générateur de nombres aléatoires qui vient de produire 7 n’est pas moins susceptible de produire à nouveau 7 lors du prochain appel.

GammeProbabilité par valeurFréquence attendue (pour 1 000)Cas d'utilisation typique
1–250%500Simulation de tirage au sort
1–616,67%167Simulation de lancer de matrice
1–1010%100Sélection du décile
1-521,92%19Jeu de cartes
1 à 1001%10Percentile/usage général
1 à 1 000 0000,0001%0,001Simulation de billets de loterie

Génération de nombres aléatoires en science : méthodes de Monte Carlo

Les méthodes de Monte Carlo utilisent un échantillonnage aléatoire pour résoudre des problèmes analytiquement difficiles, voire impossibles. Nommées d'après le casino de Monaco (pour des raisons évidentes), ces méthodes transforment des problèmes déterministes difficiles en problèmes probabilistes résolubles par simulation.

Estimation de π : Générez aléatoirement des points dans un carré unitaire (x, y chacun uniforme dans [0,1]). Comptez combien se trouvent dans le cercle unitaire (x² + y² ≤ 1). Le rapport est π/4. Avec 1 million de points aléatoires, vous pouvez estimer π avec environ 3 à 4 décimales. Ce n’est pas une manière efficace de calculer π, mais cela démontre magnifiquement le pouvoir du hasard.

Modélisation financière : La tarification des options Black-Scholes et les calculs de valeur à risque simulent des milliers de trajectoires de prix futures possibles à l’aide de nombres aléatoires. Chaque chemin de simulation représente un avenir possible. La distribution des résultats sur des millions de simulations donne la distribution de probabilité des rendements du portefeuille.

Développement de médicaments : Les simulations Monte Carlo modélisent les interactions entre molécules médicamenteuses et prédisent la probabilité qu'un médicament candidat se lie à une protéine cible. Cela réduit le nombre d’expériences en laboratoire nécessaires, économisant ainsi des milliards de dollars en développement pharmaceutique.

Génération de nombres aléatoires uniques (sans remplacement)

Parfois, vous avez besoin de nombres aléatoires qui ne se répètent pas, par exemple pour mélanger un jeu de cartes, répartir les participants en groupes ou sélectionner les gagnants d'une loterie. C'est ce qu'on appelleéchantillonnage sans remplacement (contrairement à l'échantillonnage avec remplacement, où la même valeur peut apparaître plusieurs fois).

L'algorithme standard pour cela est leMélange Fisher-Yates (également connu sous le nom de Knuth Shuffle). Pour un tableau de n éléments : commencez par le dernier élément, échangez-le avec un élément choisi au hasard dans l'ensemble du tableau (y compris lui-même), puis passez à l'avant-dernier élément, échangez-le avec un élément aléatoire parmi ceux restants et continuez. Le résultat est une permutation uniformément aléatoire en temps O(n).

Pour générer k nombres aléatoires uniques à partir d'une plage [min, max] : créez un tableau de toutes les valeurs de la plage, appliquez Fisher-Yates, prenez les k premiers éléments. Cela garantit que chaque combinaison de valeurs k est également probable : un échantillon véritablement uniforme sans remplacement.

Les nombres aléatoires dans la prise de décision quotidienne

Les générateurs de nombres aléatoires sont étonnamment utiles pour les décisions pratiques quotidiennes :

Rompre les liens : Lorsqu’il existe deux options tout aussi bonnes, un nombre aléatoire peut prendre la décision sans trop réfléchir. Les recherches suggèrent que lorsque les gens délibèrent trop longtemps sur des choix véritablement équivalents, ils introduisent des préjugés qui les rendent moins satisfaits du résultat que s'ils avaient choisi au hasard.

Planification et planification : Des calendriers de rotation aléatoires garantissent l’équité dans le temps. Qui choisit en premier dans un brouillon fantastique, qui obtient le changement préféré, quel sujet est discuté en premier lors d'une réunion – l'attribution aléatoire élimine le favoritisme et les perceptions d'injustice.

Apprentissage et pratique : Les étudiants qui utilisent des flashcards bénéficient d'un classement aléatoire : cela les empêche d'apprendre des « indices contextuels » (connaître la réponse à la carte 15 parce que vous venez de répondre à la carte 14). L'entrelacement aléatoire de problèmes de pratique est une technique éprouvée (pratique entrelacée) qui renforce la rétention à long terme par rapport à la pratique bloquée.

Inspiration créative : Les écrivains, les artistes et les musiciens utilisent des générateurs de mots aléatoires, des générateurs d'invites et des outils de contraintes aléatoires pour surmonter les blocages créatifs. Les contraintes imposées au hasard obligent souvent à des solutions créatives inattendues et intéressantes.

Foire aux questions

Ce générateur est-il vraiment aléatoire ?

Il utilise lede votre navigateur. crypto.getRandomValues() API, qui est un générateur de nombres pseudo-aléatoires cryptographiquement sécurisé (CSPRNG). Pour les jeux, les décisions, les statistiques et les tirages au sort, cela ne se distingue pas du véritable hasard. Pour un véritable hasard absolu (issu de phénomènes physiques), utilisez des RNG matériels ou des services comme random.org.

Puis-je générer des nombres aléatoires sans répétitions ?

Oui, c'est ce qu'on appelle l'échantillonnage sans remplacement. La calculatrice utilise l'algorithme de lecture aléatoire de Fisher-Yates : génère toutes les valeurs de la plage, les mélange de manière aléatoire, renvoie le premier N. Cela garantit que chaque valeur apparaît au plus une fois et que chaque combinaison est également probable.

Quelle est la probabilité d’obtenir deux fois le même nombre ?

Avec remplacement (mode standard), pour une plage de N valeurs, la probabilité d'obtenir la même valeur sur deux tirages consécutifs est de 1/N. Pour la plage 1 à 100 : 1 % par paire. Sur de nombreux tirages, les répétitions sont attendues et normales. Avec le mode « sans répétitions », les doublons consécutifs sont impossibles, de par leur conception.

Puis-je l'utiliser pour choisir des numéros de loterie ?

Absolument. Définissez la plage en fonction de votre loterie (par exemple, 1 à 49) et activez « pas de répétitions » pour choisir des numéros uniques. Chaque combinaison est également probable : aucun numéro ou combinaison n'a plus ou moins de chances de gagner. La loterie elle-même est aléatoire, donc toute méthode de sélection est également valable.

Qu'est-ce qu'une graine dans la génération de nombres aléatoires ?

Une graine est la valeur de départ d'un générateur de nombres pseudo-aléatoires. La même graine produit toujours la même séquence. Ceci est utile pour les simulations reproductibles : définissez la graine, exécutez votre simulation, enregistrez la graine et vous pourrez reproduire la même séquence aléatoire plus tard pour vérification ou débogage.

Comment puis-je choisir un élément au hasard dans une liste ?

Numérotez vos éléments de 1 à N, puis générez un entier aléatoire de 1 à N. L'élément correspondant est votre sélection aléatoire. Par exemple, pour sélectionner au hasard parmi 7 membres d’une équipe, générez un nombre entier aléatoire de 1 à 7. Chaque personne a une chance égale de 1/7 ≈ 14,3 % d’être sélectionnée.

Math.random() en JavaScript est-il vraiment aléatoire ?

Non. Math.random() est un simple PRNG sans garantie de sécurité. Il convient aux jeux et aux applications non sensibles mais ne doit jamais être utilisé à des fins cryptographiques (génération de clés, jetons, mots de passe). Pour les applications de sécurité, utilisez toujours crypto.getRandomValues() ou un CSPRNG côté serveur.

Quelle est la différence entre un PRNG et un CSPRNG ?

Un PRNG (Pseudorandom Number Generator) est déterministe et rapide mais prévisible si vous en savez suffisamment sur son état. Un CSPRNG (Cryptographically Secure PRNG) ajoute la propriété selon laquelle les sorties sont impossibles à distinguer informatiquement du véritable caractère aléatoire, même si un attaquant observe certaines sorties. Les CSPRNG sont requis pour les mots de passe, les clés et les jetons.

Qu'est-ce qu'une simulation Monte-Carlo ?

Une simulation Monte Carlo utilise un grand nombre d'échantillons aléatoires pour estimer des quantités complexes. Exemple : estimez π en plaçant des points au hasard dans un carré contenant un cercle — le rapport des points à l'intérieur du cercle au total des points converge vers π/4. Les méthodes de Monte Carlo sont utilisées en finance, en physique, en ingénierie et en statistiques.

Les générateurs de nombres aléatoires peuvent-ils être biaisés ?

Les RNG de mauvaise qualité peuvent présenter des biais : certaines valeurs apparaissant plus fréquemment que d’autres, ou des corrélations entre des valeurs consécutives. La qualité est mesurée par des tests statistiques (NIST Test Suite, TestU01 BigCrush). Les algorithmes modernes comme Mersenne Twister, PCG et xoshiro réussissent tous les tests standards et sont impartiaux à des fins pratiques.

Nombres aléatoires dans les jeux et génération procédurale

Les jeux vidéo sont construits sur le hasard. De la génération aléatoire de tuiles dans la création du monde de Minecraft à la modification du comportement de l'IA ennemie, le caractère aléatoire de haute qualité crée des expériences rejouables et imprévisibles. La génération procédurale de contenu (PCG) utilise des nombres aléatoires avec des contraintes mathématiques pour créer un vaste contenu avec un minimum d'effort manuel : les 18 quintillions de planètes de No Man's Sky ont toutes été générées de manière procédurale à partir de graines aléatoires.

Les jeux Roguelike comme Nethack, Spelunky et Hades définissent le genre grâce à la génération de niveaux procéduraux. Chaque course génère un donjon, un placement d'ennemi et une distribution d'objets différents. Le jeu sème ce caractère aléatoire afin que les courses semblent équitables (le RNG ne décide pas au hasard que vous mourez immédiatement) tout en restant imprévisible. De nombreux roguelikes affichent la graine afin que les joueurs puissent rejouer une partie identique ou partager des graines intéressantes avec d'autres.

Les jeux de table utilisent le hasard physique (dés, cartes mélangées, toupies) depuis des siècles. Les équivalents numériques doivent imiter exactement ces distributions. Un jet de dé d6 standard utilise une distribution uniforme sur {1,2,3,4,5,6}. Un tirage à partir d'un jeu mélangé utilise une permutation aléatoire. Certains jeux utilisent des pools de dés (lancez plusieurs dés, prenez le plus élevé) ou des dés avec avantage/désavantage, ce qui nécessite une conception statistique minutieuse pour obtenir les distributions de probabilité souhaitées.

Génération d'autres distributions à partir de nombres aléatoires uniformes

La plupart des RNG produisent des nombres uniformément répartis entre 0 et 1 (ou des nombres entiers dans une plage). Nous avons souvent besoin de nombres aléatoires qui suivent d’autres distributions : normale, exponentielle, de Poisson, etc. Ceux-ci peuvent être dérivés de nombres aléatoires uniformes à l’aide de méthodes de transformation.

LeTransformation de Box-Muller génère des nombres aléatoires normalement distribués à partir de deux nombres aléatoires uniformes U₁ et U₂ : Z₁ = √(−2ln(U₁)) × cos(2πU₂) et Z₂ = √(−2ln(U₁)) × sin(2πU₂). Z₁ et Z₂ suivent tous deux la distribution normale standard N(0,1). Échelle avec Z × σ + μ pour obtenir N (μ, σ²).

LeMéthode de transformation inverse utilise l'inverse de la fonction de distribution cumulative (CDF). Pour une distribution exponentielle de taux λ : X = −ln(1−U)/λ où U est uniforme dans [0,1]. Cela transforme directement une variable aléatoire uniforme en une variable distribuée exponentiellement. La méthode fonctionne pour toute distribution avec un CDF analytiquement inversible.

Tests statistiques pour le caractère aléatoire

Comment vérifier qu’un générateur de nombres aléatoires est réellement aléatoire ? Les tests statistiques vérifient si une séquence de nombres présente des modèles qui seraient improbables dans une séquence véritablement aléatoire. La suite de tests statistiques du NIST contient 15 tests utilisés pour évaluer les RNG pour les applications cryptographiques. Les tests clés incluent :

Test de fréquence (monobit) : Vérifie que les 0 et les 1 apparaissent avec une fréquence égale dans la représentation binaire des nombres générés. Une pièce biaisée qui tombe sur face 60 % du temps échouerait à ce test.

Exécute le test : Vérifie le nombre de bits identiques consécutifs (exécutions). Trop de longues séquences du même bit indiquent un modèle non aléatoire. Une séquence véritablement aléatoire a une distribution prévisible des longueurs de séquence.

Test en série : Vérifie si des paires, des triples ou des quadruples de valeurs se produisent avec une fréquence égale. Si le générateur produit la séquence 1,2,3,4,5,6,1,2,3,4,5,6... il réussit le test de fréquence mais échoue au test série — les paires ne sont pas aléatoires.

Test statistiqueCe qu'il détecteSuite de tests NIST ?
Fréquence (monobit)Fréquence 0/1 inégaleOui
Exécute le testTrop/peu de valeurs identiques consécutivesOui
AutocorrélationValeurs corrélées aux valeurs précédentesOui
Chi carréRépartition non uniformeOui (test de fréquence)
Espacement des anniversairesEspacement trop régulier entre les valeursVia TestU01
IrréductibleTests de modèles multiplesSuite séparée

La suite de tests TestU01 « BigCrush » est considérée comme le test pratique le plus strict : elle exécute 106 tests et rejette de nombreux algorithmes qui réussissent des suites de tests plus petites. Les algorithmes modernes comme PCG et xoshiro réussissent BigCrush ; les algorithmes plus anciens, comme le générateur congruentiel linéaire utilisé dans les premières bibliothèques C, échouent à plusieurs tests et ne doivent pas être utilisés pour des applications de qualité.

Utiliser ce générateur de nombres aléatoires

Définissez les valeurs minimales et maximales pour définir votre plage. Définissez « combien » pour générer plusieurs nombres à la fois. Activez l'option « pas de répétitions » pour générer une liste de numéros uniques (échantillonnage sans remplacement) – idéal pour les choix de loterie, les tirages de cartes ou l'affectation des participants à des groupes sans répétition. La séquence générée utilise l'API aléatoire cryptographique de votre navigateur pour des résultats de haute qualité adaptés à tout objectif non lié à la sécurité. Pour une utilisation à la loterie, générez des nombres égaux au nombre de choix requis dans la plage de votre loterie. Pour une tombola, attribuez des numéros séquentiels aux participations et tirez au sort le numéro correspondant. Les résultats sont générés à chaque fois que vous cliquez sur le bouton – les résultats précédents ne sont ni stockés ni suivis.