random_device – třída

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.

Viz také

<náhodný>