O que é um bom gerador de números aleatórios para um jogo?

O que é um bom gerador de números aleatórios para usar em um jogo em C ++?

Minhas considerações são:

Muitos números aleatórios são necessários, então a velocidade é boa.Os jogadores sempre se queixam de números aleatórios, mas eu gostaria de poder indicá-los para uma referência que explica que eu realmente fiz o meu trabalho.Como este é um projeto comercial para o qual não tenho muito tempo, seria bom se o algoritmo a) fosse relativamente fácil de implementar ou b) tivesse uma boa implementação não-GPL disponível.Eu já estou usandorand() Em muitos lugares, qualquer outro gerador deveria ser bom para justificar todas as mudanças que seriam necessárias.

Eu não sei muito sobre este assunto, então a única alternativa que eu poderia chegar é aMersenne Twister; satisfaz todos esses requisitos? Há mais alguma coisa melhor?

Editar: Mersenne Twister parece ser a escolha consensual. Mas e o ponto 4? É realmente muito melhor do querand()?

Editar 2: Deixe-me ser um pouco mais claro no ponto 2: Não há como enganar os jogadores conhecendo os números aleatórios. Período. Eu quero que seja aleatório o suficiente para que as pessoas (pelo menos aquelas que entendem de aleatoriedade) não possam reclamar disso, mas eu não estou preocupado com as previsões. É por isso que coloco a velocidade como a principal consideração.

Editar 3: Estou inclinado para os Marsglia RNGs agora, mas ainda gostaria de mais informações. Portanto, estou montando uma recompensa.

Editar 4: Apenas uma nota: Eu pretendo aceitar uma resposta pouco antes da meia-noite UTC de hoje (para evitar mexer com o representante de alguém). Então, se você está pensando em responder, não espere até o último minuto!
Além disso, gosto da aparência dos geradores XORshift da Marsaglia. Alguém tem alguma opinião sobre eles?

questionAnswers(16)

yourAnswerToTheQuestion