Maison >développement back-end >C++ >Comment C peut-il générer efficacement des entiers aléatoires uniformément distribués ?

Comment C peut-il générer efficacement des entiers aléatoires uniformément distribués ?

DDD
DDDoriginal
2024-12-24 05:59:13150parcourir

How Can C   Efficiently Generate Uniformly Distributed Random Integers?

Générer efficacement des entiers aléatoires uniformément distribués

Générer des entiers aléatoires uniformément distribués dans une plage spécifiée est une tâche fondamentale dans de nombreuses applications de programmation. Bien qu'apparemment trivial, atteindre des exigences optimales en matière de vitesse, d'uniformité, de flexibilité et d'amorçage peut s'avérer difficile.

Pour répondre à ces préoccupations, la norme C 2011 a introduit une bibliothèque de nombres aléatoires robuste. L'extrait de code ci-dessous exploite les capacités de cette bibliothèque pour générer efficacement des entiers aléatoires uniformément distribués :

#include <random>

std::random_device rd;     // Only used once to initialise (seed) engine
std::mt19937 rng(rd());    // Random-number engine used (Mersenne-Twister in this case)
std::uniform_int_distribution<int> uni(min,max); // Guaranteed unbiased

auto random_integer = uni(rng);

Cette approche offre plusieurs avantages :

  • Efficace : Le Mersenne -Le moteur Twister utilisé dans le RNG est connu pour sa vitesse et son efficacité, ce qui le rend adapté à la génération d'un grand nombre de données aléatoires. nombres.
  • Uniforme : La classe uniform_int_distribution garantit que les entiers aléatoires sont générés uniformément dans la plage spécifiée.
  • Flexible : Les valeurs minimales et maximales peut être ajusté selon les besoins, permettant une large gamme de applications.
  • Seedable : rand_device fournit une graine pour le générateur aléatoire, permettant des résultats reproductibles lorsque vous le souhaitez.

En utilisant cette approche standardisée, les programmeurs peuvent efficacement générer des entiers aléatoires uniformément distribués sans avoir besoin de formules complexes ou d'implémentations personnalisées.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn