std:: discrete_distribution
|
Definiert im Header
<random>
|
||
|
template
<
class
IntType
=
int
>
class discrete_distribution ; |
(seit C++11) | |
std::discrete_distribution
erzeugt zufällige Ganzzahlen im Intervall
[
0
,
n
)
, wobei die Wahrscheinlichkeit jeder einzelnen Ganzzahl
i
definiert ist als
w
i
/S
, also das
Gewicht
der
i
-ten Ganzzahl dividiert durch die Summe aller
n
Gewichte.
std::discrete_distribution
erfüllt alle Anforderungen von
RandomNumberDistribution
.
Inhaltsverzeichnis |
Template-Parameter
| IntType | - | Der vom Generator erzeugte Ergebnistyp. Der Effekt ist undefiniert, falls dies nicht einer der folgenden Typen ist: short , int , long , long long , unsigned short , unsigned int , unsigned long , oder unsigned long long . |
Mitgliedertypen
| Mitgliedertyp | Definition |
result_type
(C++11)
|
IntType |
param_type
(C++11)
|
der Typ des Parametersatzes, siehe RandomNumberDistribution . |
Memberfunktionen
|
(C++11)
|
Konstruiert neue Verteilung
(öffentliche Elementfunktion) |
|
(C++11)
|
Setzt den internen Zustand der Verteilung zurück
(öffentliche Elementfunktion) |
Erzeugung |
|
|
(C++11)
|
Erzeugt die nächste Zufallszahl in der Verteilung
(öffentliche Elementfunktion) |
Eigenschaften |
|
|
Ermittelt die Liste der Wahrscheinlichkeiten
(öffentliche Elementfunktion) |
|
|
(C++11)
|
Ruft das Verteilungsparameterobjekt ab oder legt es fest
(öffentliche Elementfunktion) |
|
(C++11)
|
Gibt den minimal möglicherweise generierten Wert zurück
(öffentliche Elementfunktion) |
|
(C++11)
|
Gibt den maximal möglicherweise generierten Wert zurück
(öffentliche Elementfunktion) |
Nicht-Member-Funktionen
|
(C++11)
(C++11)
(entfernt in C++20)
|
vergleicht zwei Verteilungsobjekte
(Funktion) |
|
(C++11)
|
führt Stream-Eingabe und -Ausgabe für Pseudo-Zufallszahlenverteilung durch
(Funktionsschablone) |
Beispiel
#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"; }
Mögliche Ausgabe:
0 generated 4037 times 1 generated 962 times 2 generated 1030 times 3 generated 3971 times