std:: exponential_distribution
|
Défini dans l'en-tête
<random>
|
||
|
template
<
class
RealType
=
double
>
class exponential_distribution ; |
(depuis C++11) | |
Produit des valeurs aléatoires non négatives à virgule flottante x , distribuées selon la fonction de densité de probabilité :
-
P(x|λ) = λe
-λx
La valeur obtenue est le temps/distance jusqu'au prochain événement aléatoire si les événements aléatoires se produisent à un taux constant λ par unité de temps/distance. Par exemple, cette distribution décrit le temps entre les clics d'un compteur Geiger ou la distance entre les mutations ponctuelles dans un brin d'ADN.
Ceci est la contrepartie continue de std::geometric_distribution .
std::exponential_distribution
satisfait 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
|
(C++11)
|
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 le paramètre de distribution
lambda
(taux d'événements)
(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) |
|
(C++11)
|
effectue des opérations d'entrée/sortie sur flux pour une distribution de nombres pseudo-aléatoires
(modèle de fonction) |
Notes
Certaines implémentations peuvent occasionnellement renvoyer l'infini si
RealType
est
float
. Ceci correspond au
LWG issue 2524
.
Exemple
#include <iomanip> #include <iostream> #include <map> #include <random> #include <string> int main() { std::random_device rd; std::mt19937 gen(rd()); // si les particules se désintègrent en moyenne une fois par seconde, // combien de temps, en secondes, jusqu'à la suivante ? std::exponential_distribution<> d(1); std::map<int, int> hist; for (int n = 0; n != 10000; ++n) ++hist[2 * d(gen)]; for (auto const& [x, y] : hist) std::cout << std::fixed << std::setprecision(1) << x / 2.0 << '-' << (x + 1) / 2.0 << ' ' << std::string(y / 200, '*') << '\n'; }
Sortie possible :
0.0-0.5 ******************* 0.5-1.0 *********** 1.0-1.5 ******* 1.5-2.0 **** 2.0-2.5 ** 2.5-3.0 * 3.0-3.5 3.5-4.0
Liens externes
| Weisstein, Eric W. "Distribution exponentielle." De MathWorld — Une ressource Web Wolfram. |