Namespaces
Variants

std:: uniform_real_distribution

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

Erzeugt zufällige Gleitkommazahlen x , gleichmäßig verteilt im Intervall [a, b) , das heißt, verteilt gemäß der Wahrscheinlichkeitsdichtefunktion:

P(x|a,b) =
1
b − a
.

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

Inhaltsverzeichnis

Template-Parameter

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

Mitgliedertypen

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

Memberfunktionen

Konstruiert eine neue Verteilung
(öffentliche Member-Funktion)
(C++11)
Setzt den internen Zustand der Verteilung zurück
(öffentliche Member-Funktion)
Erzeugung
(C++11)
Erzeugt die nächste Zufallszahl in der Verteilung
(öffentliche Member-Funktion)
Eigenschaften
(C++11)
Gibt die Verteilungsparameter zurück
(öffentliche Member-Funktion)
(C++11)
Ruft das Verteilungsparameterobjekt ab oder legt es fest
(öffentliche Member-Funktion)
(C++11)
Gibt den minimal möglichen generierten Wert zurück
(öffentliche Member-Funktion)
(C++11)
Gibt den maximal möglichen generierten Wert zurück
(öffentliche Member-Funktion)

Nicht-Member-Funktionen

(C++11) (C++11) (entfernt in C++20)
vergleicht zwei Verteilungsobjekte
(Funktion)
führt Stream-Eingabe und -Ausgabe auf Pseudozufallszahlenverteilung durch
(Funktionsschablone)

Hinweise

Es ist schwierig, eine Verteilung über das geschlossene Intervall [a, b] aus dieser Verteilung zu erstellen. Die Verwendung von std:: nextafter ( b, std:: numeric_limits < RealType > :: max ( ) ) als zweiten Parameter funktioniert aufgrund von Rundungsfehlern nicht immer.

Die meisten bestehenden Implementierungen haben einen Fehler, bei dem sie gelegentlich b zurückgeben können ( GCC #63176 LLVM #18767 MSVC STL #1074 ). Ursprünglich wurde angenommen, dass dies nur passiert, wenn RealType float ist und wenn LWG issue 2524 vorhanden ist, aber es wurde später gezeigt, dass keines von beiden erforderlich ist, um den Fehler auszulösen .

Beispiel

Drucke 10 Zufallszahlen zwischen 1 und 2.

#include <iostream>
#include <random>
int main()
{
    std::random_device rd;  // Will be used to obtain a seed for the random number engine
    std::mt19937 gen(rd()); // Standard mersenne_twister_engine seeded with rd()
    std::uniform_real_distribution<> dis(1.0, 2.0);
    for (int n = 0; n < 10; ++n)
        // Use dis to transform the random unsigned int generated by gen into a 
        // double in [1, 2). Each call to dis(gen) generates a new random double.
        std::cout << dis(gen) << ' ';
    std::cout << '\n';
}

Mögliche Ausgabe:

1.80829 1.15391 1.18483 1.38969 1.36094 1.0648 1.97798 1.27984 1.68261 1.57326

Externe Links

Ziehen zufälliger Gleitkommazahlen aus einem Intervall — © 2022. Frédéric Goualard, Université de Nantes.