Namespaces
Variants

std:: uniform_real_distribution

From cppreference.net
Défini dans l'en-tête <random>
template < class RealType = double >
class uniform_real_distribution ;
(depuis C++11)

Produit des valeurs à virgule flottante aléatoires x , uniformément distribuées sur l'intervalle [a, b) , c'est-à-dire distribuées selon la fonction de densité de probabilité :

P(x|a,b) =
1
b − a
.
**Traduction :**
P(x|a,b) =
1
b − a
.
**Note :** Le texte à traduire était uniquement la ponctuation finale (le point), qui reste identique en français. Tous les autres éléments (balises HTML, contenu mathématique, termes C++) ont été préservés conformément aux instructions.

std::uniform_real_distribution satisfait toutes les exigences de RandomNumberDistribution .

Table des matières

Paramètres du modèle

RealType - Le type de résultat généré par le générateur. L'effet est indéfini si ce n'est pas l'un des float , double , ou long double .

Types membres

Type de membre Définition
result_type (C++11) RealType
param_type (C++11) le type du jeu de paramètres, voir RandomNumberDistribution .

Fonctions membres

construit une nouvelle distribution
(fonction membre publique)
(C++11)
réinitialise l'état interne de la distribution
(fonction membre publique)
Génération
(C++11)
génère le prochain nombre aléatoire dans la distribution
(fonction membre publique)
Caractéristiques
(C++11)
retourne les paramètres de la distribution
(fonction membre publique)
(C++11)
obtient ou définit l'objet paramètre de distribution
(fonction membre publique)
(C++11)
retourne la valeur potentiellement générée minimale
(fonction membre publique)
(C++11)
retourne la valeur potentiellement générée maximale
(fonction membre publique)

Fonctions non membres

(C++11) (C++11) (supprimé en C++20)
compare deux objets de distribution
(fonction)
effectue des opérations d'entrée/sortie sur flux pour une distribution de nombres pseudo-aléatoires
(modèle de fonction)

Notes

Il est difficile de créer une distribution sur l'intervalle fermé [a, b] à partir de cette distribution. L'utilisation de std:: nextafter ( b, std:: numeric_limits < RealType > :: max ( ) ) comme second paramètre ne fonctionne pas toujours en raison des erreurs d'arrondi.

La plupart des implémentations existantes contiennent un bogue où elles peuvent occasionnellement retourner b ( GCC #63176 LLVM #18767 MSVC STL #1074 ). On pensait initialement que cela ne se produisait que lorsque RealType est float et lorsque LWG issue 2524 est présent, mais il a depuis été démontré que aucune de ces conditions n'est nécessaire pour déclencher le bogue .

Exemple

Afficher 10 nombres aléatoires entre 1 et 2.

#include <iostream>
#include <random>
int main()
{
    std::random_device rd;  // Will be used to obtain a seed for the random number engine
    std::mt19937 gen(rd()); // Standard mersenne_twister_engine seeded with rd()
    std::uniform_real_distribution<> dis(1.0, 2.0);
    for (int n = 0; n < 10; ++n)
        // Use dis to transform the random unsigned int generated by gen into a 
        // double in [1, 2). Each call to dis(gen) generates a new random double.
        std::cout << dis(gen) << ' ';
    std::cout << '\n';
}

Sortie possible :

1.80829 1.15391 1.18483 1.38969 1.36094 1.0648 1.97798 1.27984 1.68261 1.57326

Liens externes

Tirage de nombres flottants aléatoires dans un intervalle — © 2022. Frédéric Goualard, Université de Nantes.