Le Twister Mersenne est largement considéré comme bon. Heck, la source CPython dit qu’il est "l’un des générateurs les plus testés du monde". mais qu'est ce que ça veut dire? Quand on me demande de lister les propriétés de ce générateur, la plupart de ce que je peux offrir est mauvais:
- Il est massif et inflexible (par exemple, aucune recherche ou plusieurs flux),
- Il échoue aux tests statistiques standard malgré sa taille massive,
- Il a de sérieux problèmes autour de 0, suggérant qu'il se randomise assez mal,
- C'est à peine rapide
etc. Comparé à des GNA tels que XorShift *, il est également extrêmement compliqué.
J'ai donc cherché des informations sur les raisons pour lesquelles cela avait été considéré comme bon. Le document original fait de nombreux commentaires sur la période "super astronomique" et sur l’équidistribution à 623 dimensions, disant:
Parmi les nombreuses mesures connues, les tests basés sur l'uniformité dimensionnelle supérieure, tels que le test spectral (cf. Knuth [1981]) et le test de distribution k, décrits ci-dessous, sont considérés comme les plus puissants.
Mais, pour cette propriété, le générateur est battu par un compteur de longueur suffisante! Cela ne fait aucun commentaire sur les distributions locales , c'est ce qui compte vraiment dans un générateur (bien que "local" puisse signifier différentes choses). Et même les CSPRNG ne s’inquiètent pas de ces longues périodes, car ce n’est tout simplement pas très important.
Il y a beaucoup de maths dans le journal, mais pour autant que je sache, il s'agit en réalité de qualité aléatoire. Presque toutes les mentions à ce sujet reviennent rapidement à ces revendications originales, en grande partie inutiles.
Il semble que les gens se sont engagés dans ce mouvement au détriment de technologies plus anciennes et plus fiables. Par exemple, si vous augmentez à 3 le nombre de mots d'un LCG (beaucoup moins que le "seulement 624" d'un Twister Mersenne) et que vous transmettez le mot du haut à chaque passage, il passe BigCrush ( la partie la plus difficile de la suite de tests TestU01 ), malgré l’échec du Twister ( papier PCG, fig. 2 ). Compte tenu de cela et de la faiblesse des preuves que j’ai pu trouver à l’appui de Mersenne Twister, qu’est - ce qui a attiré l’attention sur son choix par rapport aux autres choix?
Ce n'est pas purement historique non plus. On m'a dit en passant que le Twister Mersenne était au moins plus éprouvé dans la pratique que, par exemple, PCG aléatoire . Mais les cas d'utilisation sont-ils si intelligents qu'ils peuvent faire mieux que nos batteries de tests? Certains Google suggèrent qu'ils ne le sont probablement pas.
En bref, je me demande comment le Twister Mersenne a obtenu sa réputation positive généralisée, à la fois dans son contexte historique et ailleurs. D'un côté, je suis évidemment sceptique quant à ses qualités, mais de l'autre, il est difficile d'imaginer qu'il s'agisse d'un événement entièrement aléatoire.
Réponses:
La MT a été considérée comme bonne pendant quelques années, jusqu'à ce que les tests plus avancés TestU01 BigCrush et de meilleurs PRNGs aient révélé qu'elle était plutôt mauvaise.
Le tableau sur pcg-random.org donne, par exemple, un bon aperçu des caractéristiques de certains des PRNG les plus utilisés, où le seul "bon" avantage du Mersenne Twister est la grande période et la possibilité graine (résultats reproductibles), il réussit les tests simples et rapides TestU01 SmallCrush, mais échoue lors des tests de qualité statistique les plus récents, en particulier les suivants: LinearComp Test de TestU01 et les batteries Crush et BigCrush de TestU01.2219937
Cette page répertorie les fonctionnalités de Mersenne-Twister en détail:
Des qualités positives
Qualités Neutre
Qualités Négatives
Résumé : Mersenne Twister n’est plus assez bon, mais la plupart des applications et des bibliothèques ne sont pas encore là.
la source
Je suis l'éditeur qui a accepté l'article de MT dans ACM TOMS en 1998 et je suis également le concepteur de TestU01. Je n'utilise pas MT, mais principalement MRG32k3a, MRG31k3p et LRSR113. Pour en savoir plus sur ceux-ci, sur MT et sur ce qu'il y a d'autre, vous pouvez consulter les articles suivants:
F. Panneton, P. L'Ecuyer et M. Matsumoto, `` Générateurs améliorés à longue période basés sur les récurrences linéaires Modulo 2 '', ACM Transactions on Mathematical Software, 32, 1 (2006), 1-16.
P. L'Ecuyer, «Génération de nombres aléatoires», chapitre 3 du Handbook of Computational Statistics, JE Gentle, W. Haerdle et Y. Mori, éd., Deuxième édition, Springer-Verlag, 2012, 35-71. . https://link.springer.com/chapter/10.1007/978-3-642-21551-3_3
P. L'Ecuyer, D. Munger, B. Oreshkin et R. Simard, «Nombres aléatoires pour ordinateurs parallèles: exigences et méthodes», Mathématiques et ordinateurs en simulation, 135, (2017), 3-17. http://www.sciencedirect.com/science/article/pii/S0378475416300829?via%3Dihub
P. L'Ecuyer, "Génération de nombres aléatoires avec plusieurs flux pour ordinateurs séquentiels et parallèles", a invité le didacticiel avancé, Actes de la conférence de simulation de l'hiver 2015, IEEE Press, 2015, 31-44.
la source
Un peu comme les algorithmes de tri à cet égard, il n’existe pas de PRNG «taille unique». Différents sont utilisés à des fins différentes et il existe une grande variété de critères de conception et d'utilisations. Il est possible d’appliquer de manière incorrecte les PRNG, par exemple en utilisant un pour la cryptographie pour lequel il n’est pas conçu. L'entrée de Wikipédia sur Mersenne Twister mentionne également qu'il n'a pas été conçu pour les "simulations de Monte-Carlo nécessitant des générateurs de nombres aléatoires indépendants".
Comme indiqué sur Wikipedia, ce PRNG est en effet utilisé dans un grand nombre de langages de programmation et d’applications même comme PRNG par défaut. Il faudrait une analyse quasi sociologique pour expliquer pourquoi un seul PRNG est favorisé. Quelques facteurs possibles pouvant contribuer à ce PRNG:
L’auteur a de bonnes compétences scientifiques dans le domaine et travaille dans les GNRP depuis des décennies.
Il a été spécialement conçu pour être supérieur aux autres méthodes de l'époque.
L'auteur est engagé dans des implémentations et leur suivi, y contribuant également. Certains PRNG sont plus théoriques et les auteurs ne se préoccupent pas toujours des implémentations réelles.
Le système est bien pris en charge / mis à jour sur une page Web.
De nouvelles versions du PRNG ont été développées pour remédier aux faiblesses. Il n’existe pas un seul algorithme Mersenne Twister, c’est plutôt des versions différentes et une famille de variantes qui peuvent répondre à différents besoins.
Il a été analysé et testé de manière approfondie par un logiciel d'analyse aléatoire standard et adopté, par des autorités indépendantes.
Il existe un effet connu mesuré avec les sites Web et de nombreux autres contextes tels que les citations scientifiques appelées "attachement préférentiel" qui peuvent être mesurés. C’est essentiellement là où les sources historiques établies de longue date sont de plus en plus utilisées. Un tel effet pourrait expliquer les choix du PRNG au fil du temps.
En d'autres termes, vous parlez d'un phénomène de "popularité" associé et lié à des choix humains, qui n'est pas strictement lié à des qualités particulières, mais qui est une sorte de propriété complexe / émergente et d'interaction entre différents algorithmes, utilisateurs et environnement. / contextes d'utilisation.
Voici une telle analyse indépendante de l’algorithme Mersenne Twister - Un générateur de nombres pseudo-aléatoires et ses variantes de Jagannatam (15p). Le dernier paragraphe est essentiellement une réponse à votre question. citant seulement les 1 er quelques phrases:
la source