Maison >développement back-end >C++ >Comment C 11 améliore-t-il la génération de nombres aléatoires ?
C 11 a introduit de nouvelles fonctionnalités pour générer des nombres aléatoires, visant à améliorer la flexibilité, performances et cohérence. Ces fonctionnalités incluent des moteurs et des distributions de nombres aléatoires, qui répondent aux limites des générateurs de nombres aléatoires traditionnels comme rand().
Les moteurs sont au cœur de la génération de nombres aléatoires. Ils génèrent des séquences de nombres pseudo-aléatoires et assurent l’uniformité de la distribution. C 11 propose plusieurs options de moteur, notamment :
Les distributions décrivent la distribution de nombres aléatoires souhaitée. C 11 comprend des distributions pour générer :
Pour générer des nombres aléatoires en C 11, suivez ces étapes :
#include <random> // Engine std::mt19937 rng(std::random_device()()); // Distributions std::uniform_int_distribution<uint32_t> uint_dist; std::normal_distribution<double> normal_dist(0.5, 0.2); // Generate random numbers while (true) { std::cout << uint_dist(rng) << " " << normal_dist(rng) << std::endl; }
Les résultats tout aussi probables garantissent que chaque nombre dans la plage spécifiée a la même chance d'être généré, évitant les biais dans la génération de nombres aléatoires. Les distributions appropriées, telles que celles fournies dans
La génération de nombres aléatoires en C 11 prend en charge la concurrence. Pour garantir la sécurité des threads, attribuez à chaque thread son propre moteur avec une graine unique ou synchronisez l'accès à l'objet moteur.
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!