std::discrete_distribution<IntType>::discrete_distribution
From cppreference.com
 
 
 < cpp | numeric | random | discrete distribution 
 
 
 C++ 
 Feature test macros (C++20)
 Concepts library (C++20)
 Metaprogramming library (C++11)
 Ranges library (C++20)
 Filesystem library (C++17)
 Concurrency support library (C++11)
 Execution control library (C++26)
Numerics library 
  
 
 
 
 
 
 
 Mathematical special functions (C++17)
 Mathematical constants (C++20)
 Basic linear algebra algorithms (C++26)
 Data-parallel types (SIMD) (C++26)
 Floating-point environment (C++11)
 Bit manipulation (C++20)
 Saturation arithmetic (C++26)
(C++17)
(C++17)
(C++17)
(C++17)
(C++17)
(C++17)
Pseudo-random number generation 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
(C++20)
(C++11)
(C++11)
(C++11)
(C++26)
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
(C++26)
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
std::discrete_distribution 
 
 
 
 Member functions
discrete_distribution::discrete_distribution
 Generation
 Characteristics
 Non-member functions
(C++11)(C++11)(until C++20)
(C++11)(C++11)
discrete_distribution();
 (1) 
 (since C++11) 
template< class InputIt >
discrete_distribution( InputIt first, InputIt last );
 (2) 
 (since C++11) 
discrete_distribution( InputIt first, InputIt last );
discrete_distribution( std::initializer_list <double> weights );
 (3) 
 (since C++11) 
template< class UnaryOperation >
 (4) 
 (since C++11) 
discrete_distribution( std::size_t count, double xmin, double xmax,
explicit discrete_distribution( const param_type& params );
 (5) 
 (since C++11) 
Constructs a new distribution object.
1) Default constructor. Constructs the distribution with a single weight p = {1}. This distribution will always generate 0.
2) Constructs the distribution with weights in the range 
[first, last). If first == last, the effects are the same as of the default constructor.3) Constructs the distribution with weights in weights. Effectively calls discrete_distribution(weights.begin(), weights.end()).
4) Constructs the distribution with count weights that are generated using function unary_op. Each of the weights is equal to wi = unary_op(xmin + δ(i + 0.5)), where δ = 
 (xmax − xmin)
 count
 and i ∈ {0, ..., count − 1}. xmin and xmax must be such that δ > 0. If count == 0 the effects are the same as of the default constructor.5) Constructs the distribution with params as the distribution parameters.
[edit] Parameters
 first, last
 -
 the range of elements defining the numbers to use as weights. The type of the elements referred by 
InputIterator must be convertible to double
 weights
 -
 initializer list containing the weights
 unary_op
 -
 unary operation function object that will be applied. 
The signature of the function should be equivalent to the following:
Ret fun(const Type &a);
The signature does not need to have const &. 
The type  Type must be such that an object of type double can be dereferenced and then implicitly converted to  Type. The type Ret must be such that an object of type double can be dereferenced and assigned a value of type Ret.
 params
 -
 the distribution parameter set
 Type requirements
 -
InputIt must meet the requirements of LegacyInputIterator.