Namespaces
Variants

std:: normal_distribution

From cppreference.net
std::normal_distribution
Definiert im Header <random>
template < class RealType = double >
class normal_distribution ;
(seit C++11)

Erzeugt Zufallszahlen gemäß der Normal- (oder Gauß-) Zufallszahlenverteilung . Sie ist definiert als:

f(x; μ,σ) =
1
σ
exp

-1
2


x-μ
σ


2


**Anmerkung:** Da der Text hauptsächlich aus mathematischen Formeln besteht und gemäß den Anweisungen keine Übersetzung von Inhalten innerhalb von ,
,  Tags sowie keine Übersetzung von C++-spezifischen Begriffen erfolgen soll, bleibt der Inhalt unverändert. Die mathematische Notation ist international standardisiert und wird im Deutschen identisch verwendet.

Hier μ ist der Mittelwert und σ ist die Standardabweichung ( stddev ).

std::normal_distribution erfüllt alle Anforderungen von RandomNumberDistribution .

Inhaltsverzeichnis

Template-Parameter

RealType - Der vom Generator erzeugte Ergebnistyp. Das Verhalten ist undefiniert, wenn dies nicht einer der Typen float , double , oder long double ist.

Mitgliedertypen

Mitgliedstyp Definition
result_type (C++11) RealType
param_type (C++11) der Typ des Parametersatzes, siehe RandomNumberDistribution .

Memberfunktionen

Konstruiert eine 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
Gibt die Verteilungsparameter zurück
(öffentliche Elementfunktion)
(C++11)
Ruft das Verteilungsparameterobjekt ab oder setzt es
(öffentliche Elementfunktion)
(C++11)
Gibt den minimal möglichen generierten Wert zurück
(öffentliche Elementfunktion)
(C++11)
Gibt den maximal möglichen generierten Wert zurück
(öffentliche Elementfunktion)

Nicht-Member-Funktionen

(C++11) (C++11) (entfernt in C++20)
vergleicht zwei Verteilungs-Objekte
(Funktion)
führt Stream-Eingabe und -Ausgabe auf Pseudo-Zufallszahlenverteilung durch
(Funktions-Template)

Beispiel

#include <cmath>
#include <iomanip>
#include <iostream>
#include <map>
#include <random>
#include <string>
int main()
{
    std::random_device rd{};
    std::mt19937 gen{rd()};
    // Werte nahe dem Mittelwert sind am wahrscheinlichsten. Standardabweichung
    // beeinflusst die Streuung der generierten Werte vom Mittelwert.
    std::normal_distribution d{5.0, 2.0};
    // Eine Stichprobe aus der Normalverteilung ziehen und auf eine Ganzzahl runden.
    auto random_int = [&d, &gen]{ return std::lround(d(gen)); };
    std::map<long, unsigned> histogram{};
    for (auto n{10000}; n; --n)
        ++histogram[random_int()];
    for (const auto [k, v] : histogram)
        std::cout << std::setw(2) << k << ' ' << std::string(v / 200, '*') << '\n';
}

Mögliche Ausgabe:

-1
 0
 1 *
 2 ***
 3 *****
 4 ********
 5 *********
 6 *********
 7 ******
 8 ***
 9 *
10
11

Externe Links

1. Weisstein, Eric W. "Normal Distribution." Von MathWorld — Eine Wolfram Web Resource.
2. Normal distribution — Von Wikipedia.