Dans le célèbre exposé « rand() considéré comme dangereux », en utilisant le moteur de distribution Le paradigme de génération de nombres aléatoires est préconisé par rapport à la simplification classique du module std::rand() plus.
Pour tester les affirmations faites, une expérience comparant std::rand() avec std::mt19937 plus std:: uniform_int_distribution, a été réalisée :
Étonnamment, la répartition globale des rouleaux était égale pour les deux méthodes, ce qui suggère que std::mt19937 plus std::uniform_int_distribution n'apportaient aucune uniformité supplémentaire. Cependant, la nouvelle méthode était environ 4 fois plus lente.
Bien que cette expérience semble indiquer que std::rand() n'est pas nécessairement inférieur, il est important de considérer les limitations inhérentes à std::rand() :
En revanche, le nouveau
En termes de performances, il est suggéré que std::minstd_rand peut être un remplacement approprié pour std ::mt19937 lorsque la qualité LCG est suffisante, offrant potentiellement une meilleure vitesse (notamment en évitant l'ajustement de la distribution à l'aide de uniform_int_distribution).
En fin de compte, le choix du générateur de nombres aléatoires dépend des exigences spécifiques de l'application, mais le nouveau
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!