Comment générer des flotteurs aléatoires en C ++

Comment générer des flotteurs aléatoires en C ++

Plusieurs techniques peuvent être utilisées en C ++ pour produire Flotts aléatoires. Pour une variété d'applications, y compris les simulations et la production de nombres aléatoires pour les tests, il pourrait être utile de générer Flotts aléatoires en c++. Cet article passera par différentes techniques pour créer Flotts aléatoires en c++.

Nombres flottants aléatoires en C++

Des flotteurs aléatoires peuvent être générés en C ++ en utilisant deux manières.

    • Utilisation de la fonction Rand ()
    • Utilisation de STD :: Uniform_Real_Distribution

1: Utilisation de la fonction Rand ()

Nous pouvons générer Flotts aléatoires En utilisant la norme de la bibliothèque C ++ rand() fonction. Nous pouvons générer un entier via rand() fonction, convertissez-le en flotteur, puis utilisez-le pour générer Flotts aléatoires. Pour ce faire, nous pouvons diviser l'entier généré par un grand nombre, pour obtenir un nombre compris entre 0 et 1. UN flotteur aléatoire peut ensuite être obtenu en multipliant cette valeur par la plage de flotteurs souhaitée. Par exemple, le code suivant peut être utilisé pour produire un flotteur aléatoire entre 0 et 1:

#inclure
#inclure
#inclure
int main()

srand (temps (null));
pour (int i = 0; i < 10; i++)
float r = rand () / static_cast(Rand_max);
std :: cout << r << std::endl;

retour 0;


Dans le code ci-dessus, le rand() La fonction est utilisée pour générer 10 Valeurs de points flottants aléatoires entre 0 et 1, et le temps() La fonction est utilisée pour semer le générateur de nombres aléatoires. Le rand() La méthode génère un nombre complètement aléatoire et se situe entre 0 et Rand_max. Pour garantir que la séquence de nombres aléatoires est unique chaque fois que le programme est exécuté, le srand (time (null)) La fonction crée la graine du générateur de nombres aléatoires en fonction de l'heure actuelle.

Sortir



Cependant, en utilisant le rand() technique à générer Flotts aléatoires a un certain nombre de limitations. Les nombres ne sont pas vraiment aléatoires, car un algorithme a été utilisé pour les générer. La distribution des valeurs générées n'est pas non plus uniforme car certaines valeurs sont produites plus fréquemment que d'autres.

2: Utilisation de std :: uniforme_real_distribution

L'utilisation de la bibliothèque aléatoire C ++ 11 est une méthode supplémentaire de production Flotts aléatoires. Pour produire des nombres aléatoires de différentes sortes, cette bibliothèque propose plusieurs distributions. Nous pouvons utiliser le uniforme_real_distribution distribution pour produire Flotts aléatoires. Cette distribution produit Flotts aléatoires Dans une plage donnée en utilisant deux arguments: une valeur minimale et une valeur maximale.

Jetez un œil à ce code pour générer Flotts aléatoires en utilisant uniforme_real_distribution.

#inclure
Utilisation de Namespace Std;
int main()

default_random_engine rand_number;
uniforme_real_distribution distribution (0.0,5.0);
pour (int i = 1; i < 10; i++)
couter << distribution(rand_number) << '\n';

retour 0;


Dans le code ci-dessus, nous utilisons la bibliothèque aléatoire qui crée 5 point flottant aléatoire valeurs entre 0 et 4. Il génère une distribution d'objets de distribution uniforme avec une plage de [0.0, 5.0] et un objet moteur à nombres aléatoires par défaut rand_number. La boucle FOR utilise l'objet de distribution et le moteur Gen pour produire 5 entiers aléatoires, puis utilise couter pour les afficher à la console.

Sortir



Le problème avec l'utilisation std :: uniforme_real_distribution est que nous ne pouvons pas produire de séquences aléatoires, ce qui entraîne des séquences similaires à chaque fois. La fréquence ou la probabilité dans une plage spécifique peut être calculée en utilisant cette approche, mais sur un grand nombre de tests.

Conclusion

En C ++, il existe plusieurs approches à produire Flotts aléatoires. Une stratégie peut être plus appropriée que les autres en fonction des circonstances. La classe de distribution réelle uniforme de la bibliothèque aléatoire C ++ 11 fournit une fonction membre qui génère des valeurs continues uniformément distribuées ou des nombres réels aléatoires à partir d'une plage d'entrée. Le rand() La fonction offre une méthode simple pour produire Flotts aléatoires. La technique sélectionnée dépendra finalement des besoins du programmeur et des exigences de leur logiciel.