| std::piecewise_constant_distribution(3) | C++ Standard Libary | std::piecewise_constant_distribution(3) | 
NAME¶
std::piecewise_constant_distribution - std::piecewise_constant_distribution
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 parameters
    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
    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¶
 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.begin());
  
   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)
| 2024.06.10 | http://cppreference.com |