Passer au contenu principal
Tangente
Probabilités et statistiquesObjet mathématique · Glossaire

fonction random

Une fonction random, ou fonction rand, produit des nombres qui paraissent aléatoires et servent notamment à simuler des tirages. Dans la plupart des calculatrices et langages de programmation, ils sont pseudo-aléatoires : un algorithme déterministe engendre une suite entièrement fixée par une valeur initiale, la graine, si bien que la même graine, avec le même algorithme, reproduit la même suite.
Premières transitions du générateur modulo 16 La graine 3 devient 0, puis 1, puis 6 sous la règle x suivant égale cinq x plus un modulo seize. graine 3 0 1 6 x suivant = (5x + 1) mod 16
Une même règle transforme sans tirage la graine 3 en 0, puis en 1 et en 6.
Sommaire

Ce que vous allez apprendre

  • Relier la graine, l'état interne, la transition et la valeur rendue.
  • Calculer pas à pas un générateur miniature modulo 16.
  • Vérifier le retour à la graine et une période exacte de 16.
  • Distinguer uniformité, absence de corrélations et hasard physique.
  • Choisir entre graine fixe et nouvelle initialisation selon le besoin de reproductibilité.

En clair

Appuyez plusieurs fois sur la touche random d'une calculatrice : les nombres affichés semblent imprévisibles et se dispersent dans l'intervalle proposé. Pourtant, la machine ne tire pas chaque valeur dans un chapeau. Elle applique une règle de calcul à un état caché, puis recommence avec le nouvel état.
La graine sert à initialiser le premier état ou, plus généralement, l'état interne. Avec la même graine et le même générateur, on retrouve exactement la même suite. L'impression de hasard vient d'une séquence assez bien mélangée et assez longue pour que sa répétition passe inaperçue.

Définition

Une fonction random, aussi appelée fonction rand, fournit à chaque appel une valeur issue d'une suite pseudo-aléatoire. Le mot « pseudo » est essentiel : un algorithme déterministe fait évoluer un état interne. Si xn désigne l'état après n étapes et si F désigne la règle de transition, le mécanisme s'écrit xn+1=F(xn)x_{n+1}=F(x_n). La graine est la donnée qui initialise l'état interne ; dans le modèle miniature de cette fiche, elle est égale à x0. Une fois l'état initialisé, il détermine toute la suite lorsque l'algorithme est fixé.
L'état peut être transformé avant d'être rendu : selon l'outil, le résultat est par exemple un entier ou un nombre dans un intervalle donné. Lorsque les états internes possibles du générateur considéré forment un ensemble fini, une suite suffisamment longue finit par retrouver un état antérieur. À partir de la première occurrence de cet état, elle répète alors le même cycle : sa longueur est la période, tandis que les états qui le précèdent forment un éventuel transitoire. Une grande période repousse cette répétition, sans supprimer le déterminisme.
La qualité ne se réduit pas à la période. On examine aussi si les valeurs occupent uniformément l'intervalle attendu et si des termes consécutifs présentent des corrélations détectables. Des tests statistiques évaluent ces propriétés, mais leur réussite ne transforme pas la suite en hasard physique. Les fonctions standard des calculatrices et des langages masquent généralement ce mécanisme derrière un appel simple.

De quoi c'est fait

Une fonction random repose sur cinq éléments. La graine initialise l'état interne, qui conserve la mémoire nécessaire entre deux appels. La règle de transition calcule l'état suivant à partir de l'état courant. Une transformation de sortie convertit ensuite cet état dans la forme attendue, par exemple un entier ou une valeur d'un intervalle. Enfin, la période mesure la longueur du cycle parcouru après un éventuel transitoire ; ce cycle peut dépendre de l'état initial.
La graine n'agit donc pas directement sur chaque résultat : selon le générateur, elle initialise ou détermine l'état interne, qui détermine ensuite la suite avec la règle de transition. La sortie dépend de l'état, tandis que sa distribution dépend à la fois de la transition et de la transformation choisie. Ces données suffisent à reproduire une séquence, mais ni le nom de la fonction ni le format affiché ne suffisent à juger sa qualité. Il faut encore examiner la période, l'uniformité et les corrélations.

Un exemple, pas à pas

Construisons un générateur miniature. Les données sont une graine x0 = 3, seize états possibles numérotés de 0 à 15, un multiplicateur 5 et un incrément 1. La notation « modulo 16 » signifie que l'on garde le reste de la division par 16.
1. Pour obtenir l'état suivant, on applique la règle xn+1=(5xn+1)16x_{n+1}=(5x_n+1)\bmod 16.
2. Depuis la graine 3, le premier calcul donne (5 × 3 + 1) modulo 16 = 0. Les suivants donnent (5 × 0 + 1) modulo 16 = 1, puis (5 × 1 + 1) modulo 16 = 6. Ces transitions forment une chaîne visible de 3 à 0, puis à 1 et à 6.
3. En poursuivant, on obtient successivement 3, 0, 1, 6, 15, 12, 13, 2, 11, 8, 9, 14, 7, 4, 5 et 10. Chaque entier de 0 à 15 apparaît une fois avant le retour.
4. L'étape suivante vaut (5 × 10 + 1) modulo 16 = 3. L'état initial revient après seize transitions : la période de ce générateur miniature est donc 16.
5. Le contrôle est refaisable en vérifiant les seize restes. La présence de tous les entiers montre ici une uniformité sur un cycle complet ; elle ne suffit pas à prouver l'absence de corrélations ni la qualité pour un usage réel.

En pratique

Sur une calculatrice, la fonction random sert à produire rapidement des valeurs pour une simulation ou un exercice de probabilités. Si l'intervalle ou le type de nombre obtenu ne convient pas, il faut utiliser la commande de tirage adaptée plutôt que supposer le format de sortie.
Dans un programme, fixer la graine permet de rejouer exactement un calcul et de retrouver une anomalie. Pour varier les suites entre deux exécutions, on peut choisir une nouvelle initialisation et conserver l'algorithme. Ce seul changement ne garantit toutefois pas une suite différente : des graines distinctes peuvent notamment conduire au même cycle.
Pour contrôler un générateur, on observe beaucoup de sorties plutôt qu'une courte série convaincante. Une répartition déséquilibrée ou des motifs entre valeurs successives signalent qu'il faut changer de générateur ou employer des tests statistiques spécialisés.

À ne pas confondre

Fonction random et hasard physique. Une fonction pseudo-aléatoire recalcule la même suite avec la même graine ; une source physique mesure un phénomène non produit par cette règle déterministe. Rejouer deux fois la suite avec la graine 3 montre seulement la reproductibilité du générateur testé : le cycle miniature se reproduit exactement, sans que ce constat suffise à établir la nature physique ou non d'une autre source.
Fonction random et variable aléatoire. La première est un procédé informatique qui produit une suite de valeurs. Une variable aléatoire est un objet mathématique qui associe une valeur à chaque issue d'une expérience aléatoire. Un appel de programme peut simuler ses valeurs sans se confondre avec sa définition.

Limites et pièges

Retour de la période. Après seize transitions dans l'exemple, l'état 3 réapparaît et tout le cycle recommence. Un motif qui revient toujours au même écart signale cette répétition ; il faut choisir un générateur dont la période dépasse largement le nombre d'appels prévu.
Graine réutilisée. Relancer le même algorithme avec la graine 3 redonne 3, 0, 1, 6, puis les mêmes termes. Si plusieurs essais doivent fournir des suites différentes, réutiliser cette graine les rend identiques ; il faut modifier l'initialisation.
Belle répartition, mauvais enchaînement. Voir chaque entier de 0 à 15 une fois sur le cycle confirme l'uniformité de cet effectif, mais chaque valeur détermine encore la suivante. Il faut tester séparément la distribution et les corrélations entre termes consécutifs.
Test réussi. Un générateur peut passer une batterie de tests statistiques sans devenir non déterministe. Le symptôme trompeur est de conclure « vrai hasard » à partir des seuls tests ; il faut formuler plus modestement que les défauts recherchés n'ont pas été détectés.

Pour aller plus loin

La méthode de Monte-Carlo — Voir comment des tirages numériques répétés servent à estimer une grandeur par simulation.
variable aléatoire — Distinguer l'objet probabiliste de l'algorithme informatique qui peut en simuler des réalisations.
La première loi des grands nombres — Relier la répétition des tirages au comportement de leur moyenne lorsque leur nombre augmente.
Continuez avec Tangente

Explorez les mathématiques autrement

Retrouvez nos magazines, podcasts et jeux pour explorer les mathématiques autrement.

Découvrir les offres