Ce chapitre présente donc une application directe
de la théorie développée ci-avant
-à la génération de nombres pseudo aléatoires.
+à la génération de nombres pseudo-aléatoires.
La section~\ref{sub:prng:algo}
présente tout d'abord l'algorithme de PRNG. La contrainte de
distribution uniforme de la sortie est discutée dans cette section.
La section~\ref{sub:prng:algo} a été publiée à ~\cite{bcgw11:ip,bcgr11:ip}.
-\section{ Nombres pseudo aléatoires construits par itérations unaires}\label{sub:prng:algo}
+\section{ Nombres pseudo-aléatoires construits par itérations unaires}\label{sub:prng:algo}
\end{algorithm}
\subsection{Algorithme d'un générateur}
-On peut penser à construire un générateur de nombres pseudo
-aléatoires comme dans l'algorithme~\ref{CI Algorithm} donné ci-dessous.
+On peut penser à construire un générateur de nombres
+pseudo-aléatoires comme dans l'algorithme~\ref{CI Algorithm} donné ci-dessous.
Celui-ci prend en entrée: une fonction $f$;
vue au chapitre~\ref{chap:carachaos}) et correspondant
à des itérations unaires.
En interne, il exploite un algorithme de génération
-de nombres pseudo aléatoires donné en paramètre.
+de nombres pseudo-aléatoires donné en paramètre.
Cela peut être n'importe quel PRNG (XORshift, Mersenne-Twister) dont la
sortie est uniformément distribuée.
Notre approche vise a donner des propriétés de chaos à ce générateur embarqué.
Montrons sur un exemple jouet à deux éléments
que ce théorème permet de vérifier si la sortie d'un générateur de
-nombres pseudo aléatoires est uniformément distribuée ou non.
+nombres pseudo-aléatoires est uniformément distribuée ou non.
Soient alors $g$ et $h$ deux fonctions de $\Bool^2$
définies par $g(x_1,x_2)=(\overline{x_1},x_1.\overline{x_2}) $
et $h(x_1,x_2)=(\overline{x_1},x_1\overline{x_2}+\overline{x_1}x_2)$.
sont donc fortement connexes, ce que l'on peut vérifier aux figures~\ref{fig:g:iter}
et~\ref{fig:h:iter}.
\textit{A priori}, ces deux fonctions pourraient être intégrées
-dans un générateur de nombres pseudo aléatoires. Montrons que ce n'est pas le cas pour $g$ et
+dans un générateur de nombres pseudo-aléatoires. Montrons que ce n'est pas le cas pour $g$ et
que cela l'est pour $h$.
pour n'importe quel vecteur initial de probabilités $\pi^0$, on a
$\lim_{k \to \infty} \pi^0 M^k_g = \pi_g$ et
$\lim_{k \to \infty} \pi^0 M^k_h = \pi_h$.
-Ainsi la chaîne de Markov associé à $h$ tend vers une
+Ainsi la chaîne de Markov associée à $h$ tend vers une
distribution uniforme, contrairement à celle associée à $g$.
On en déduit que $g$ ne devrait pas être itérée dans
-un générateur de nombres pseudo aléatoires.
+un générateur de nombres pseudo-aléatoires.
Au contraire,
$h$ devrait pouvoir être embarquée dans l'algorithme~\ref{CI Algorithm},
pour peu que le nombre $b$ d'itérations entre deux mesures successives
définie par
$M = \dfrac{1}{n} \check{M}$.
Si $\textsc{giu}(f)$ est fortement connexe, alors
- la sortie du générateur de nombres pseudo aléatoires détaillé par
+ la sortie du générateur de nombres pseudo-aléatoires détaillé par
l'algorithme~\ref{CI Algorithm} suit une loi qui
tend vers la distribution uniforme si
et seulement si $M$ est une matrice doublement stochastique.
colonne utilisé comme le paramètre $b$
dans l'algorithme~\ref{CI Algorithm}.
-Soit $e_i$ le $i^{\textrm{ème}}$ vecteur la base canonique de $\R^{2^{n}}$.
+Soit $e_i$ le $i^{\textrm{ème}}$ vecteur de la base canonique de $\R^{2^{n}}$.
Chacun des éléments $v_j$, $1 \le j \le 2^n$,
du vecteur $e_i M_f^t$ représente la probabilité
d'être dans la configuration $j$ après $t$ étapes du processus de Markov
La qualité des séquences aléatoires a été évaluée à travers la suite
de tests statistiques développée pour les générateurs de nombres
-pseudo aléatoires par le
+pseudo-aléatoires par le
\emph{National Institute of Standards and Technology} (NIST).
L'expérience a montré notamment que toutes ces fonctions
passent avec succès cette batterie de tests.