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

FreeBSD Manual Pages

  
 
  

home | help
std::discrete_distribution(3) C++ Standard Libarystd::discrete_distribution(3)

NAME
       std::discrete_distribution - std::discrete_distribution

Synopsis
	  Defined in header <random>
	  template< class IntType = int	>  (since C++11)
	  class	discrete_distribution;

	  std::discrete_distribution  produces random integers on the interval
       [0, n), where
	  the probability of each individual integer i is defined as w
	  i/S, that is the weight of the ith integer divided by	the sum	of all
       n weights.

	  std::discrete_distribution satisfies all requirements	of  RandomNum-
       berDistribution.

Template parameters
		    The	 result	type generated by the generator. The effect is
       undefined if
	  IntType - this is not	one of short, int, long, long  long,  unsigned
       short, unsigned
		    int, unsigned long,	or unsigned long long.

Member types
	  Member type	      Definition
	  result_type (C++11) IntType
	  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
	  probabilities	obtains	the list of probabilities
			(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 <iomanip>
	#include <iostream>
	#include <map>
	#include <random>

	int main()
	{
	    std::random_device rd;
	    std::mt19937 gen(rd());
	    std::discrete_distribution<> d({40,	10, 10,	40});
	    std::map<int, int> map;

	    for	(int n = 0; n <	1e4; ++n)
		++map[d(gen)];

	    for	(const auto& [num, count] : map)
		std::cout  << num << " generated " << std::setw(4) << count <<
       " times\n";
	}

Possible output:
	0 generated 4037 times
	1 generated  962 times
	2 generated 1030 times
	3 generated 3971 times

http://cppreference.com		  2024.06.10	 std::discrete_distribution(3)

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

home | help