random_device-Klasse
Generiert eine zufällige Sequenz von einem externen Gerät.
Syntax
class random_device {
public:
typedef unsigned int result_type;
// constructor
explicit random_device(const std::string& token = "");
// properties
static result_type min();
static result_type max();
double entropy() const;
// generate
result_type operator()();
// no-copy functions
random_device(const random_device&) = delete;
void operator=(const random_device&) = delete;
};
Member
random_device
Entropie
random_device::operator()
Hinweise
Die Klasse beschreibt eine Quelle von Zufallszahlen und darf - aber muss nicht - nach dem ISO C++-Standard nicht-deterministisch oder kryptografisch sicher sein. In der Visual Studio-Implementierung sind die produzierten Werte nicht-deterministisch und kryptografisch sicher, aber sie läuft langsamer als aus Modulen und Moduladaptern erstellte Generatoren (wie mersenne_twister_engine, das hochwertige und schnelle Modul für die meisten Anwendungen).
random_device
-Ergebnisse sind gleichförmig im geschlossenen Bereich [0, 2
32) verteilt.
Es ist nicht garantiert, dass random_device
zu einem nicht blockierenden Aufruf führt.
Im Allgemeinen wird random_device
verwendet, um andere mithilfe von Engines oder Engine-Adaptern erstellte Generatoren mit Startwerten auszustatten. Weitere Informationen finden Sie unter <"zufällig>".
Beispiel
Mit dem folgenden Code werden die grundlegende Funktion dieser Klasse und Beispielergebnisse veranschaulicht. Aufgrund der nicht-deterministischen Struktur von random_device
entsprechen die im Abschnitt Output gezeigten Zufallswerte nicht Ihren Ergebnissen. Dies ist normal und zu erwarten.
// random_device_engine.cpp
// cl.exe /W4 /nologo /EHsc /MTd
#include <random>
#include <iostream>
using namespace std;
int main()
{
random_device gen;
cout << "entropy == " << gen.entropy() << endl;
cout << "min == " << gen.min() << endl;
cout << "max == " << gen.max() << endl;
cout << "a random value == " << gen() << endl;
cout << "a random value == " << gen() << endl;
cout << "a random value == " << gen() << endl;
}
entropy == 32
min == 0
max == 4294967295
a random value == 2378414971
a random value == 3633694716
a random value == 213725214
Dieses Beispiel ist vereinfacht und nicht repräsentativ für den generellen Verwendungsfall dieses Generators. Ein repräsentativeres Codebeispiel finden Sie unter <"zufällig>".
Anforderungen
Header:<random>
Namespace: std
random_device::random_device
Konstruiert den Generator.
random_device(const std::string& = "");
Hinweise
Der Konstruktor initiiert bei Bedarf den Generator und ignoriert dabei den Zeichenfolgenparameter. Löst einen Wert eines durch die Implementierung definierten Typen aus, der aus Ausnahme abgeleitet wird, wenn random_device
nicht initialisiert werden konnte.
random_device::entropy
Schätzt den Zufallscharakter der Quelle ab.
double entropy() const noexcept;
Hinweise
Die Memberfunktion gibt eine, wie in Bits gemessene, Schätzung des Zufallscharakters der Quelle zurück.
random_device::operator()
Gibt einen zufälligen Wert zurück.
result_type operator()();
Hinweise
Gibt Werte zurück, die im geschlossenen Intervall [min, max
] gleichförmig verteilt sind, wie durch die Memberfunktionen min()
und max()
festgelegt. Löst einen Wert eines durch die Implementierung definierten Typs aus, der aus Auswahl abgeleitet wird, wenn keine Zufallszahl abgerufen werden konnte.