Monday, May 19, 2025

uniform_int_distribution

Overview
This is a random number distribution class that generates sequences of pseudo-random numbers from pseudo-random number engines.

Details
Syntax
//IntType:A integer type.
template <class IntType = int> 
class uniform_int_distribution;

member types
Following properties are defined.
NameDefinition
uint_least32_t result_typeThe type of the numbers generated.
param_typeThe type returned by param method.

Constructor
NameDescription
  1. uniform_int_distribution
    (result_type a = 0,
    result_type b = numeric_limits<result_type>::max())
  2. uniform_int_distribution
    (const param_type& parm)
Constructs a uniform_int_distribution object, and initializes its internal state value:
  1. Constructs based on the lower bound a and upper bound b.
  2. Constructs based on the param input.
Example
    //1
    uniform_int_distribution<long> di(1,100);
    uniform_int_distribution<> di2(1,100);

    //2
    uniform_int_distribution<long> di3(di.param());
    uniform_int_distribution<> di4(di2.param());

Methods
NameDescription
result_type min()

Returns the lower bound  of the returned value. i.e., a

Example
  uniform_int_distribution<int> di(1,100);
  //prints 1
  cout << di.min() << endl;
 result_type max()
Returns the upper bound  of the returned value. i.e., b

Example
  uniform_int_distribution<int> di(1,100);
  //prints 100
  cout << di.max() << endl;
  1. param_type param()
  2. void param
    (const param_type& parm)
  1. Returns an object with the parameters currently associated with the distribution object.
  2. Associates the parameters in object parm to the distribution object.
Example
  uniform_int_distribution<int> di(1,100);

  //1
  auto p = di.param();

  //2
  uniform_int_distribution<int> di2;
  di2.param(p);
  1. result_type operator()
    (URNG& g)
  2. result_type operator()
    (URNG& g, const param_type& parm)
Generates random numbers that are distributed according to the associated probability function. The entropy is acquired by calling g.operator().
  1. Uses the associated parameter set
  2. Uses params. The associated parameter set is not modified.
Example
  default_random_engine g(20160921);

  //1
  uniform_int_distribution<int> di(1,100);
  //prints 79
  cout << di(g) << endl;

  //2
  uniform_int_distribution<int> di2;
  //prints 96
  cout << di2(g,di.param()) << endl;
void reset()
Resets the distribution, so that subsequent uses of the object do not depend on values already produced by it.
result_type  a()Returns lower bound of the distribution parameter.
Example
  uniform_int_distribution<int> di(1,100);
  //prints 1
  cout << di.a() << endl;
result_type b()Returns upper bound of the distribution parameter.
Example
  uniform_int_distribution<int> di(1,100);
  //prints 100
  cout << di.b() << endl;

External Methods
NameDescription
ostream& operator<<
(ostream& os, const  uniform_int_distribution& di )

Saves internal state of di to os.

Example
    uniform_int_distribution<int> di(1,100);
    stringstream ss;
    ss << di;
   //prints 1 100
    cout << di << endl;
istream& operator>>
(istream&  is, uniform_int_distribution& di )
Restores internal state of di from is. 

Example
    uniform_int_distribution<int> di(1,100);
    stringstream ss;
    ss << di;
   //prints 1 100
cout << di << endl;
   //prints 1 100
ss >> di; cout << di << endl;
bool operator==
(const uniform_int_distribution&  di,  const  uniform_int_distribution& di2)
Returns true if di and di2 are the same.
bool operator!=
(const  uniform_int_distribution& di, const  uniform_int_distribution& di2)
Returns true if di and di2 are not the same.