Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
std::expone...distribution(3) C++ Standard Libarystd::expone...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 RandomNum-
       berDistribution.

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)
			(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 <iostream>
	#include <iomanip>
	#include <random>
	#include <string>
	#include <map>
	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 p : hist) {
		std::cout << std::fixed	<< std::setprecision(1)
			  << p.first/2.0 << '-'	<< (p.first+1)/2.0 << '	'
			  << std::string(p.second/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.

http://cppreference.com		  2022.07.31	 std::expone...distribution(3)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=std::exponential_distribution&sektion=3&manpath=FreeBSD+Ports+15.0>

home | help