Namensräume
Varianten
Aktionen

std::discrete_distribution<IntType>::discrete_distribution

Von cppreference.com
 
 
 
 
std::discrete_distribution
Memberfunktionen
discrete_distribution::discrete_distribution
Generierung
Eigenschaften des Generators
Nicht-Member-Funktionen
(C++11)(C++11)(bis C++20)
(C++11)(C++11)
 
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) Konstruktor mit Standardwerten. Konstruiert die Verteilung mit einem einzelnen Gewicht p = {1}. Diese Verteilung wird immer 0 generieren.
2) Konstruiert die Verteilung mit Gewichten im Bereich [firstlast). Wenn first == last, sind die Auswirkungen dieselben wie beim Standardkonstruktor.
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 mit der Funktion unary_op generiert werden. Jedes der Gewichte ist gleich wi = unary_op(xmin + δ(i + 0.5)), wobei δ =
(xmax − xmin)
count
und i ∈ {0, ..., count − 1}. xmin und xmax müssen so sein, dass δ > 0. Wenn count == 0 sind die Auswirkungen dieselben wie beim Standardkonstruktor.
5) Konstruiert die Verteilung mit params als Verteilungsparameter.

[edit] Parameter

first, last - der Bereich der Elemente, die die als Gewichte zu verwendenden Zahlen definieren. Der Typ der Elemente, auf die sich InputIterator bezieht, muss in double konvertierbar sein
weights - Initialisierungsliste mit den Gewichten
unary_op - unäre Operation, die angewendet wird.

Die Signatur der Funktion sollte äquivalent zu folgender sein:

 Ret fun(const Type &a);

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

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