Uma resposta recente mencionou o uso de Fortuna ou Mersenne Twister Random Number Generators ( RNGs ) para semear uma simulação de Monte Carlo . Eu nunca tinha ouvido falar de Fortuna antes, então procurei - parece que ele se destina principalmente ao uso criptográfico.
Atualmente, uso um Mersenne Twister no código de produção para propagar um algoritmo K-Means.
Qual (Fortuna ou Mersenne Twister) é considerado o melhor para aplicações de "semeadura algorítmica" (por exemplo, semeadura de Monte Carlo e K-Means)? Ou é um "empate" - ou seja, use o mais conveniente.
De onde estou sentado, o "melhor" deve fornecer números aleatórios da mais alta qualidade, operar rapidamente e (possivelmente) ter um baixo consumo de memória. Destes, a qualidade é provavelmente a mais importante para a maioria de nós.
RAND_MAX=32768
valores possíveis. Atualmente, estou usando MT para Monte Carlo raytracing sim. No entanto, eu não vejo o MT como um gargalo de desempenho no meu criador de perfil, provavelmente porque sou uma geração "aleatória" de coisas como direções de raios como um pré-processo . Por exemplo, eu posso gerar uma matriz de 100.000 raios na inicialização, armazená-los em uma matriz e selecionar aleatoriamente a posição inicial da matriz no tempo de execução (executando para 10.000 raios ou mais da coleção). Isso tem uma sobrecarga de memória relativamente alta, em troca de boas distribuições de números aleatórios.