Génération de nombres pseudo-aléatoires

Génération d’entiers naturels pseudo-aléatoires

La génération d’entiers naturels pseudo-aléatoires fait appel à la suite rappelée ci-dessous :

\(\begin{cases} I_0 \in \mathbb{N} \quad \text{avec} \quad \qquad I_0<m\\ I_{n+1}=(a \times I_n + c) \quad \text{mod} \,\, m \end{cases}\)

  • Le premier terme de la suite est noté I0 et représente un entier naturel appelé germe. Une base de germes est fournie dans le cadre de ce projet pour tous les groupes.

  • Le terme In+1 est déduit du terme In en considérant le reste de la division entière par m, appelée la base, de la somme d’un décalage noté c et du produit de In par un multiplicateur noté a. La fonction =MOD() permet d’obtenir directement le reste de cette division entière.

Fonction permettant de générer automatiquement le reste d’une division

Le caractère pseudo-aléatoire des entiers naturels ainsi générés dépend du choix du multiplicateur noté a, du choix de la base notée m et du choix du décalage noté c.

Brian Wichmann et David Hill ont proposé en 1982 les valeurs suivantes pour la génération de 30000 valeurs pour trois suites distinctes :

\((I_{n,1}) : \begin{cases} m=30269 \\ a=171 \\ c = 0\end{cases} \quad (I_{n,2}) : \begin{cases} m=30307 \\ a=172 \\ c = 0\end{cases} \quad (I_{n,3}) : \begin{cases} m=30323 \\ a=170 \\ c = 0\end{cases}\)

Génération de nombre pseudo-aléatoires

Il convient ensuite de combiner les valeurs des entiers naturels obtenues pour chacune des trois suites précédentes à partir de la relation suivante :

\(u_k=\Biggl( \dfrac{I_{k,1}}{30269}+\dfrac{I_{k,2}}{30307}+\dfrac{I_{k,3}}{30323} \Biggr) \quad \text{mod} \, \, 1\)

Le résultat est une suite de nombres réels pseudo-aléatoires distribués suivant une loi uniforme :

\(0 \leq u_n \leq 1\)

Ces nombres réels pseudo-aléatoires sont ensuite transformés à partir des fonctions réciproques de lois de probabilité.

Remarque

La littérature et les experts ne recommandent pas d’utiliser les fonctions =ALEA() et =ALEA.ENTRE.BORNES() pour la génération de nombres aléatoires. Ces fonctions présentent un phénomène de périodicité rapprochée. Elles restent cependant utiles dans de nombreuses applications.

Boîte de dialogue de la fonction =ALEA()
Boîte de dialogue de la fonction =ALEA.ENTRE.BORNES()