Ce qui est un bon générateur de nombres aléatoires à utiliser pour un jeu en C++?
Mes critères sont les suivants:
- Beaucoup de nombres aléatoires sont nécessaires, de sorte que la vitesse est bonne.
- Les joueurs vont se plaignent toujours des nombres aléatoires, mais je voudrais être en mesure de les faire pointer vers un document de référence qui explique que j'ai vraiment fait de mon travail.
- Puisque c'est un projet commercial qui je n'ai pas beaucoup de temps, ce serait bien si l'algorithme a) a été relativement facile à mettre en œuvre ou b) a un bon non-GPL mise en œuvre disponibles.
- Je suis déjà en utilisant
rand()
dans beaucoup d'endroits, de sorte que toute autre générateur a intérêt à être bon à justifier toutes les modifications qu'il en aurait besoin.
Je ne sais pas beaucoup sur ce sujet, de sorte que la seule alternative qui me vient en tête est le Mersenne Twister; t-il de répondre à ces exigences? Est-il rien d'autre qui est mieux?
Edit: Mersenne Twister semble être le consensus choix. Mais qu'en est point #4? Est-il vraiment beaucoup mieux que rand()
?
Edit 2: Permettez-moi d'être un peu plus clair sur le point 2: Il n'existe aucun moyen pour les joueurs de tricher en connaissant les nombres aléatoires. Période. Je veux qu'il aléatoires que les gens (au moins ceux qui comprennent l'aléatoire) ne peut pas s'en plaindre, mais je ne suis pas inquiet au sujet des prédictions. C'est pourquoi j'ai mis la vitesse comme la préoccupation principale.
Edit 3: je suis penchée vers l'Marsaglia Rng maintenant, mais je voudrais encore plus de commentaires. Donc, je suis la mise en place d'une prime.
Edit 4: Juste une remarque: j'ai l'intention d'accepter une réponse juste avant minuit UTC aujourd'hui (pour éviter de jouer avec quelqu'un rep cap). Donc, si vous envisagez de répondre, n'attendez pas la dernière minute!
Aussi, j'aime le look de Marsaglia de XORshift générateurs. Quelqu'un a une entrée à leur sujet?