Maison >développement back-end >C++ >Comment puis-je générer des nombres aléatoires à virgule flottante en C ?

Comment puis-je générer des nombres aléatoires à virgule flottante en C ?

Susan Sarandon
Susan Sarandonoriginal
2024-12-25 09:25:17306parcourir

How Can I Generate Random Floating-Point Numbers in C  ?

Génération de nombres aléatoires à virgule flottante en C

En C , la fonction rand() sert d'outil fiable pour créer des nombres pseudo-aléatoires. En le combinant avec RAND_MAX et en effectuant des opérations mathématiques simples, vous pouvez générer des flottants aléatoires dans des intervalles spécifiés. Pour les programmes récréatifs et à des fins éducatives, cette approche suffit. Cependant, si votre besoin exige des nombres véritablement aléatoires avec une distribution normale, envisagez de mettre en œuvre des techniques plus sophistiquées.

Générer des flottants de 0,0 à 1,0

Pour obtenir un flottant aléatoire entre 0,0 et 1,0 (inclus), employer la formule suivante :

float r = static_cast<float>(rand()) / static_cast<float>(RAND_MAX);

Générer des flotteurs dans un cadre arbitraire Plage

Pour générer un flottant dans la plage [0.0, X], utilisez la formule suivante :

float r2 = static_cast<float>(rand()) / (static_cast<float>(RAND_MAX) / X);

Générer des flottants dans une plage personnalisée

Pour générer un flottant dans la plage [LO, HI], utilisez la formule suivante :

float r3 = LO + static_cast<float>(rand()) / (static_cast<float>(RAND_MAX) / (HI - LO));

Initialisation du nombre aléatoire Générateur

Avant d'utiliser rand(), il est crucial d'initialiser le générateur de nombres aléatoires en appelant srand(). Cette initialisation ne doit avoir lieu qu'une seule fois lors de l'exécution du programme, et non à chaque appel à rand(). Une pratique courante implique :

srand(static_cast<unsigned>(time(0)));

Inclusions de fichiers d'en-tête

Notez que les inclusions de fichiers d'en-tête suivantes sont nécessaires :

  • pour appeler rand() et srand()
  • pour l'heure d'appel()

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