random_device-Klasse
Generiert eine zufällige Sequenz von einem externen Gerät.
class random_device { public: typedef unsigned int result_type; // cosntructor 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; };
Mitglieder
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, 232) 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 Modulen oder Moduladaptern erstellte Generatoren mit Startwerten auszustatten. Weitere Informationen finden Sie unter <random>.
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 Ausgabe 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;
}
Ausgabe:
Dieses Beispiel ist vereinfacht und nicht repräsentativ für den generellen Verwendungsfall dieses Generators. Ein repräsentativeres Codebeispiel finden Sie unter <random>.
Anforderungen
Header: <random>
Namespace: std