Gerador Aleatório Mersenne Twister
O Mersenne Twister é um gerador de números pseudo-aleatórios desenvolvido em 1997 por Makoto Matsumoto e Takuji Nishimura. Ele fornece geração rápida de inteiros pseudo-aleatórios de alta qualidade. O Mersenne Twister foi projetado especificamente para resolver muitas das falhas encontradas em algoritmos mais antigos. (Matsumoto, 1998)
O Mersenne Twister é um algoritmo muito popular e é usado para implementar o comando "random" em diversas linguagens como Ruby, Python e R. O algoritmo Mersenne Twister cria números aleatórios de alta qualidade adequados para simulações de Monte Carlo. Mersenne Twister não é um gerador criptograficamente seguro. No entanto, sua velocidade de execução e aleatoriedade de alta qualidade o tornam um gerador muito atraente para IA.
O nome Mersenne Twister vem do fato de que o período do Mersenne Twister é sempre escolhido para ser um número primo de Mersenne.
Um número primo é qualquer número que só pode ser dividido igualmente por ele mesmo e um. Por exemplo, 5 é um número primo. Um número primo de Mersenne é qualquer número n onde M também é um número primo, como visto na equação abaixo.
Exemplo em Python
def mersenne_twister(mult=16807,mod=(2**31)-1,period=(2**30),min=0,max=1,seed=123456789, size=1):
"""Pseudorandom number generater"""
MT = []
for i in range(size):
seed = (mult * seed) % mod
MT.append( (max - min) * (seed / mod) + min )
period -= 1
if period == 0:
print("Pseudorandom period nearing!!")
if size == 1:
return MT.pop()
else:
return MT