La question se pose quand on ouvre le code. Ainsi, la fonction random de la glibc représente l'exemple à éviter en génération de nombres aléatoires.
1. Le générateur commence par inialiser un tableau de 34 nombres sur le principe du générateur Standard Minimal:
x_0 = s; x_i = 16807 * x_(i-1) mod (2^31 - 1) (pour i = 1,..., 30);
2. x_i = x_(i-31) (pour i = 31,..., 33).
Pour i plus grand ou égal à 34, l’algorithme suit l’algorithme de Lagged-Fibonacci, avec m = 2^31: x_i = (x_(i-3) + x_(i-31)) mod 2^31.
Enfin, la fonction ignore les 344 premiers nombres et supprime le bit de poids faible: o_i = x_(i+344) >> 1.
En conclusion, on observe que le générateur résume ce qu’il convient de ne pas faire:
1. le générateur Standard Minimal est dépassé;
2. les vecteurs x_i, x_(i+28), x_(i+31) sont contenus dans deux plans;
3. la linéarité n’est pas complètement supprimée en enlevant le bit de poids faible, vu que pour i supérieur ou égal à 34,
o_i = o_(i-31) + o_(i-3) mod 2^31 ou o_i = o_(i-31) + o_(i-3) + 1 mod 2^31,
et on conserve la majeure partie des inconvénients liés à m = 2^(31), sachant le choix d'une puissance de deux pour m est à proscrire.
1. Le générateur commence par inialiser un tableau de 34 nombres sur le principe du générateur Standard Minimal:
x_0 = s; x_i = 16807 * x_(i-1) mod (2^31 - 1) (pour i = 1,..., 30);
2. x_i = x_(i-31) (pour i = 31,..., 33).
Pour i plus grand ou égal à 34, l’algorithme suit l’algorithme de Lagged-Fibonacci, avec m = 2^31: x_i = (x_(i-3) + x_(i-31)) mod 2^31.
Enfin, la fonction ignore les 344 premiers nombres et supprime le bit de poids faible: o_i = x_(i+344) >> 1.
En conclusion, on observe que le générateur résume ce qu’il convient de ne pas faire:
1. le générateur Standard Minimal est dépassé;
2. les vecteurs x_i, x_(i+28), x_(i+31) sont contenus dans deux plans;
3. la linéarité n’est pas complètement supprimée en enlevant le bit de poids faible, vu que pour i supérieur ou égal à 34,
o_i = o_(i-31) + o_(i-3) mod 2^31 ou o_i = o_(i-31) + o_(i-3) + 1 mod 2^31,
et on conserve la majeure partie des inconvénients liés à m = 2^(31), sachant le choix d'une puissance de deux pour m est à proscrire.
Calendrier


