O Mersenne Twister é amplamente considerado bom. Heck, a fonte do CPython diz que "é um dos geradores mais amplamente testados que existe". Mas o que isso significa? Quando solicitado a listar as propriedades desse gerador, a maior parte do que posso oferecer é ruim:
- É massivo e inflexível (por exemplo, sem busca ou múltiplos fluxos),
- Ele falha nos testes estatísticos padrão, apesar de seu enorme tamanho de estado,
- Ele tem sérios problemas em torno de 0, sugerindo que se randomiza bastante mal,
- Dificilmente é rápido
e assim por diante. Comparado a RNGs simples como o XorShift *, também é irremediavelmente complicado.
Por isso, procurei algumas informações sobre por que isso foi considerado bom. O artigo original faz muitos comentários sobre o período "super astronômico" e a equidistribuição 623 dimensional, dizendo
Entre muitas medidas conhecidas, os testes baseados na uniformidade dimensional mais alta, como o teste espectral (cf. Knuth [1981]) e o teste de distribuição k, descritos abaixo, são considerados os mais fortes.
Mas, para essa propriedade, o gerador é derrotado por um contador de comprimento suficiente! Isso não faz comentários sobre as distribuições locais , o que realmente interessa a você em um gerador (embora "local" possa significar várias coisas). E mesmo os CSPRNGs não se importam com períodos tão grandes, já que isso não é remotamente importante.
Há muita matemática no jornal, mas, tanto quanto posso dizer, pouco disso é realmente sobre a qualidade da aleatoriedade. Praticamente todas as menções disso rapidamente retornam a essas alegações originais, em grande parte inúteis.
Parece que as pessoas entraram nesse movimento às custas de tecnologias mais antigas e confiáveis. Por exemplo, se você apenas aumentar o número de palavras em um LCG para 3 (muito menos que os "apenas 624" de um Mersenne Twister) e emitir a palavra principal a cada passagem, ela passará no BigCrush ( a parte mais difícil do conjunto de testes TestU01 ), apesar da falha do Twister ( papel PCG, fig. 2 ). Diante disso, e as poucas evidências que pude encontrar em apoio ao Mersenne Twister, o que causou atenção para favorecê-lo em relação às outras opções?
Isso também não é puramente histórico. Disseram-me de passagem que o Mersenne Twister é pelo menos mais comprovado na prática do que, digamos, PCG aleatoriamente . Mas os casos de uso são tão exigentes que podem fazer melhor do que nossas baterias de testes? Alguns pesquisadores do Google sugerem que provavelmente não o são.
Em resumo, estou me perguntando como o Mersenne Twister obteve sua reputação positiva generalizada, tanto em seu contexto histórico quanto em outros aspectos. Por um lado, sou obviamente cético em relação a suas qualidades, mas, por outro, é difícil imaginar que se tratou de uma ocorrência inteiramente aleatória.