Namespaces
Variants

std::discrete_distribution<IntType>:: discrete_distribution

From cppreference.net
discrete_distribution ( ) ;
(1) (seit C++11)
template < class InputIt >
discrete_distribution ( InputIt first, InputIt last ) ;
(2) (seit C++11)
discrete_distribution ( std:: initializer_list < double > weights ) ;
(3) (seit C++11)
template < class UnaryOperation >

discrete_distribution ( std:: size_t count, double xmin, double xmax,

UnaryOperation unary_op ) ;
(4) (seit C++11)
explicit discrete_distribution ( const param_type & params ) ;
(5) (seit C++11)

Konstruiert ein neues Verteilungsobjekt.

1) Standardkonstruktor. Konstruiert die Verteilung mit einem einzelnen Gewicht p = {1 }. Diese Verteilung wird immer 0 erzeugen.
2) Konstruiert die Verteilung mit Gewichten im Bereich [ first , last ) . Falls first == last , sind die Effekte identisch mit denen des Standardkonstruktors.
3) Konstruiert die Verteilung mit Gewichten in weights . Ruft effektiv discrete_distribution ( weights. begin ( ) , weights. end ( ) ) auf.
4) Konstruiert die Verteilung mit count Gewichten, die mittels der Funktion unary_op erzeugt werden. Jedes der Gewichte entspricht w i = unary_op(xmin + δ(i + 0.5)) , wobei δ =
(xmax − xmin)
count
und i ∈ {0, ..., count − 1 }. xmin und xmax müssen so beschaffen sein, dass δ > 0 . Falls count == 0 sind die Effekte identisch mit denen des Standardkonstruktors.
5) Konstruiert die Verteilung mit params als Verteilungsparameter.

Parameter

first, last - der Bereich der Elemente, die die als Gewichte zu verwendenden Zahlen definieren. Der Typ der durch InputIterator referenzierten Elemente muss konvertierbar zu double sein.
weights - Initialisierungsliste, die die Gewichte enthält
unary_op - Funktionsobjekt für unäre Operation, das angewendet wird.

Die Signatur der Funktion sollte äquivalent zu Folgendem sein:

Ret fun ( const Type & a ) ;

Die Signatur muss nicht const & besitzen.
Der Typ Type muss so beschaffen sein, dass ein Objekt vom Typ double dereferenziert und dann implizit zu Type konvertiert werden kann. Der Typ Ret muss so beschaffen sein, dass ein Objekt vom Typ double dereferenziert und ein Wert vom Typ Ret zugewiesen werden kann. ​

params - der Verteilungsparametersatz
Typanforderungen
-
InputIt muss die Anforderungen von LegacyInputIterator erfüllen.