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

Comment puis-je générer efficacement des nombres flottants aléatoires en C ?

Barbara Streisand
Libérer: 2024-12-25 14:24:09
original
413 Les gens l'ont consulté

How Can I Generate Random Float Numbers in C   Effectively?

Génération de nombres flottants aléatoires en C

Pour votre dilemme spécifique, diviser la sortie de rand avec une constante n'est pas une approche robuste pour générer des flottants aléatoires. Bien qu'il puisse fournir des résultats approximatifs à des fins d'apprentissage, il ne convient pas aux applications sérieuses nécessitant des nombres aléatoires fiables.

Générer des flottants aléatoires à l'aide d'opérations mathématiques

Pour générer des nombres flottants de haute précision les flotteurs aléatoires en C , utilisent les fonctions fournies par la bibliothèque standard C. Par exemple, pour générer un flottant aléatoire entre 0,0 et 1,0, vous pouvez utiliser le code suivant :

float r = static_cast<float> (rand()) / static_cast<float> (RAND_MAX);
Copier après la connexion

Si vous devez générer des flottants aléatoires dans un intervalle arbitraire, ajustez la formule en conséquence :

  • De 0,0 à X :

    float r2 = static_cast<float> (rand()) / (static_cast<float> (RAND_MAX/X));
    Copier après la connexion
  • De LO à HI :

    float r3 = LO + static_cast<float> (rand()) /( static_cast<float> (RAND_MAX/(HI-LO)));
    Copier après la connexion

Utilisation Générateurs de nombres véritablement aléatoires

Dans les scénarios où vous avez besoin de nombres véritablement aléatoires avec une distribution normale, envisagez d'utiliser des méthodologies plus avancées telles que :

  • Mersenne Twister
  • Registre à décalage à rétroaction linéaire (LFSR)
  • Blum Blum Shub

Amorçage du générateur de nombres aléatoires

Avant d'utiliser rand(), vous devez initialiser le générateur de nombres aléatoires en appelant srand(). Généralement, cela se fait via :

srand (static_cast<unsigned> (time(0)));
Copier après la connexion

N'oubliez pas d'#inclure les en-têtes appropriés :

  • pour rand et srand
  • pour le temps

En adhérant à ces directives, vous pouvez générer efficacement des flottants aléatoires en C pour diverses applications, des simulations à l'analyse de donné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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal