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

FreeBSD Manual Pages

  
 
  

home | help
std::piecew...istribution(3)  C++ Standard Libary std::piecew...istribution(3)

NAME
       std::piecewise_constant_distribution - std::piecewise_constant_distrib-
       ution

Synopsis
	  Defined in header <random>
	  template< class RealType = double >	  (since C++11)
	  class	piecewise_constant_distribution;

	  std::piecewise_constant_distribution	produces random	floating-point
       numbers,	which
	  are uniformly	distributed within each	of the several subintervals [b
	  i, b
	  i+1),	each with its own weight w
	  i. The set of	interval boundaries and	the set	of weights are the pa-
       rameters	of this
	  distribution.

	  The probability density for any b
	  i  x <b
	  i+1 is

	  w
	  i
	  S (b
	  i+1 -	b
	  i)

	  , where S is the sum of all weights.

	  std::piecewise_constant_distribution satisfies all requirements of
	  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
	  intervals	returns	the distribution parameters
	  densities	(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)

Example
       // Run this code

	#include <iostream>
	#include <map>
	#include <random>
	#include <string>

	int main()
	{
	    std::random_device rd;
	    std::mt19937 gen(rd());
	    // 50% of the time,	generate a random number between 0 and 1
	    // 50% of the time,	generate a random number between 10 and	15
	    std::vector<double>	i {0, 1, 10, 15};
	    std::vector<double>	w {1, 0, 1};
	    std::piecewise_constant_distribution<> d(i.begin(),	i.end(), w.be-
       gin());

	    std::map<int, int> hist;
	    for	(int n {}; n < 1e4; ++n)
		++hist[d(gen)];

	    for	(std::cout << std::hex << std::uppercase; auto [x, y] :	hist)
		std::cout << x << ' ' << std::string(y / 100, '*') << '\n';
	}

Possible output:
	0 **************************************************
	A **********
	B *********
	C *********
	D **********
	E *********

References
	    * C++23 standard (ISO/IEC 14882:2023):

	    * 28.5.9.6.2 Class template	piecewise_constant_distribution
	      [rand.dist.samp.pconst] (p: 1421-1422)
	    * C++20 standard (ISO/IEC 14882:2020):

	    * 29.6.9.6.2 Class template	piecewise_constant_distribution
	      [rand.dist.samp.pconst] (p: 1207-1208)
	    * C++17 standard (ISO/IEC 14882:2017):

	    * 29.6.8.6.2 Class template	piecewise_constant_distribution
	      [rand.dist.samp.pconst] (p: 1098-1100)
	    * C++14 standard (ISO/IEC 14882:2014):

	    * 26.5.8.6.2 Class template	piecewise_constant_distribution
	      [rand.dist.samp.pconst] (p: 962-964)
	    * C++11 standard (ISO/IEC 14882:2011):

	    * 26.5.8.6.2 Class template	piecewise_constant_distribution
	      [rand.dist.samp.pconst] (p: 955-957)

http://cppreference.com		  2024.06.10	  std::piecew...istribution(3)

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

home | help