Mersenne Twister
Le Mersenne Twister est un gĂ©nĂ©rateur de nombres pseudo-alĂ©atoires, rĂ©putĂ© pour sa qualitĂ©, dĂ©veloppĂ© par Makoto Matsumoto et Takuji Nishimura en 1997. Lâalgorithme est fondĂ© sur un TGSFR (twisted generalised shift feedback register, un type particulier de registre Ă dĂ©calage Ă rĂ©troaction) et tient son nom dâun nombre premier de Mersenne. Il existe au moins deux variantes majeures, la plus rĂ©pandue Ă©tant MT 19937, utilisant le nombre premier de Mersenne et prĂ©sente les propriĂ©tĂ©s suivantes :
- sa période est de ;
- il est uniformément distribué sur un grand nombre de dimensions (623 pour les nombres de 32 bits) ;
- il est plus rapide que la plupart des autres générateurs (sauf les plus médiocres statistiquement) ;
- il est aléatoire quel que soit le poids du bit considéré, suivant les tests Diehard[1], mais échoue systématiquement sur deux des tests BigCrush de TestU01 (en).
Une révision de l'algorithme a été faite afin de combler quelques lacunes, notamment l'initialisation correcte, afin d'assurer la maximisation de la période.
Applications
L'algorithme Mersenne Twister a Ă©tĂ© optimisĂ© pour ĂȘtre utilisĂ© dans le cadre de simulations de Monte-Carlo dans un grand nombre de domaines, migration de photons, coalescence du gĂ©nome, biologie cellulaire et finance informatique. Le Mersenne Twister est le gĂ©nĂ©rateur de nombres alĂ©atoires par dĂ©faut en Python, Ruby, R, PHP, MATLAB et Stata depuis la version 2014. Il est Ă©galement disponible en C++ depuis la version 2011 du standard[2].
C'est également un générateur de nombres pseudo-aléatoires de SPSS.
Avantages
La version la plus communément utilisée de Mersenne Twister, MT19937, qui crée une suite d'entiers de 32-bits, possÚde une propriété intéressante : il possÚde une trÚs longue période.
Sécurité cryptographique
Mersenne Twister, contrairement Ă lâalgorithme Blum Blum Shub, est insuffisant pour une utilisation en cryptographie car des algorithmes tels que Berlekamp-Massey ou Reed-Sloane permettent dâen prĂ©dire le comportement. Il reste cependant trĂšs utilisĂ© dans tous les domaines hors de la cryptographie en raison de son efficacitĂ©.
Voir aussi
Les générateurs congruentiels linéaires (Linear Congruential Generator) ont une période inférieure ou égale à leur modulo. Hugo Foulon a écrit, en 1985, dans sa thÚse nommée Les aléas du hasard qu'un générateur était de bonne qualité s'il respectait les rÚgles de Knuth.
Références
- « Why MT? », sur hiroshima-u.ac.jp (consulté le ).
- ISO C++ - 26.5.3.2 Class template mersenne_twister_engine
- M. Matsumoto et T. Nishimura, Mersenne twister: A 623-dimensionally equidistributed uniform pseudorandom number generator, ACM Trans. dans Modeling and Computer Simulations, 1998.