| std::exponential_distribution(3) | C++ Standard Libary | std::exponential_distribution(3) | 
NAME¶
std::exponential_distribution - std::exponential_distribution
Synopsis¶
 Defined in header <random>
  
   template< class RealType = double > (since C++11)
  
   class exponential_distribution;
  
   Produces random non-negative floating-point values \(\small x\)x, distributed
  
   according to probability density function:
  
   \(\small P(x|\lambda) = \lambda e^{-\lambda x}\)P(x|λ) =
    λe-λx
  
   The value obtained is the time/distance until the next random event if random
    events
  
   occur at constant rate \(\small\lambda\)λ per unit of time/distance.
    For example,
  
   this distribution describes the time between the clicks of a Geiger counter
    or the
  
   distance between point mutations in a DNA strand.
  
   This is the continuous counterpart of std::geometric_distribution.
  
   std::exponential_distribution satisfies RandomNumberDistribution.
Template parameters¶
 RealType - The result type generated by the generator. The effect
    is undefined if
  
   this is not one of float, double, or long double.
Member types¶
 Member type Definition
  
   result_type (C++11) RealType
  
   param_type (C++11) the type of the parameter set, see
    RandomNumberDistribution.
Member functions¶
 constructor constructs new distribution
  
   (C++11) (public member function)
  
   reset resets the internal state of the distribution
  
   (C++11) (public member function)
Generation¶
 operator() generates the next random number in the distribution
  
   (C++11) (public member function)
Characteristics¶
 lambda returns the lambda distribution parameter (rate of events)
  
   (C++11) (public member function)
  
   param gets or sets the distribution parameter object
  
   (C++11) (public member function)
  
   min returns the minimum potentially generated value
  
   (C++11) (public member function)
  
   max returns the maximum potentially generated value
  
   (C++11) (public member function)
Non-member functions¶
 operator==
  
   operator!= compares two distribution objects
  
   (C++11) (function)
  
   (C++11)(removed in C++20)
  
   operator<< performs stream input and output on pseudo-random number
  
   operator>> distribution
  
   (C++11) (function template)
Notes¶
 Some implementations may occasionally return infinity if RealType
    is float. This is
  
   LWG issue 2524.
Example¶
// Run this code
  
   #include <iomanip>
  
   #include <iostream>
  
   #include <map>
  
   #include <random>
  
   #include <string>
  
   int main()
  
   {
  
   std::random_device rd;
  
   std::mt19937 gen(rd());
  
   // if particles decay once per second on average,
  
   // how much time, in seconds, until the next one?
  
   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';
  
   }
Possible output:¶
 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
External links¶
 Weisstein, Eric W. "Exponential Distribution." From
    MathWorld — A Wolfram Web
  
   Resource.
| 2024.06.10 | http://cppreference.com |