Freigeben über


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

random_device::random_device

random_device::entropy

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, 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

Siehe auch

Referenz

<random>