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
Barbara Streisandoriginal
2024-12-25 14:24:09392parcourir

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);

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));
  • De LO à HI :

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

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)));

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!

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