Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Generuje náhodnou sekvenci z externího zařízení.
Syntaxe
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;
};
Členové
random_device
entropie
random_device::operator()
Poznámky
Třída popisuje zdroj náhodných čísel a je povolen, ale nevyžaduje se, aby nebyla deterministická nebo kryptograficky zabezpečená standardem ISO C++. V implementaci sady Visual Studio jsou vytvořené hodnoty nedeterministické a kryptograficky zabezpečené, ale běží pomaleji než generátory vytvořené z modulů a adaptérů motoru (například mersenne_twister_engine, vysoce kvalitní a rychlý modul, který je pro většinu aplikací volbou).
random_device výsledky jsou rovnoměrně distribuovány v uzavřeném rozsahu [ 0, 232).
random_device není zaručeno, že výsledkem neblokujícího volání.
random_device Obecně se používá k zasadování jiných generátorů vytvořených s motory nebo adaptéry motoru. Další informace najdete v náhodném> zobrazení<.
Příklad
Následující kód ukazuje základní funkce této třídy a příklady výsledků. Z důvodu ne deterministické povahy random_devicenebudou náhodné hodnoty zobrazené v části Výstup odpovídat vašim výsledkům. To je normální a očekávané.
// 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
Tento příklad je zjednodušený a nepředstavuje obecný případ použití tohoto generátoru. Další reprezentativní příklad kódu najdete v náhodném příkladu<.>
Požadavky
Header:<random>
Obor názvů: std
random_device::random_device
Vytvoří generátor.
random_device(const std::string& = "");
Poznámky
Konstruktor inicializuje generátor podle potřeby a ignoruje parametr řetězce. Vyvolá hodnotu typu definovaného implementací odvozeného z výjimky , pokud random_device nelze inicializovat.
random_device::entropie
Odhaduje náhodnost zdroje.
double entropy() const noexcept;
Poznámky
Členová funkce vrátí odhad náhodnosti zdroje měřené v bitech.
random_device::operator()
Vrátí náhodnou hodnotu.
result_type operator()();
Poznámky
Vrátí hodnoty rovnoměrně rozdělené v uzavřeném intervalu [ min, max] podle členských funkcí min() a max(). Vyvolá hodnotu typu definovaného implementací odvozeného z výjimky , pokud nelze získat náhodné číslo.