random_device — Klasa
Generuje losową sekwencję z urządzenia zewnętrznego.
Składnia
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;
};
Elementy członkowskie
random_device
entropia
random_device::operator()
Uwagi
Klasa opisuje źródło liczb losowych i jest dozwolona, ale nie jest wymagana do zabezpieczenia niedeterministycznego lub kryptograficznego przez standard ISO C++. W implementacji programu Visual Studio generowane wartości są niedeterministyczne i kryptograficznie bezpieczne, ale działa wolniej niż generatory utworzone na podstawie silników i adapterów silnika (takich jak mersenne_twister_engine, wysokiej jakości i szybki aparat wybrany dla większości aplikacji).
random_device
wyniki są równomiernie rozłożone w zamkniętym zakresie [ 0, 2
32).
random_device
Nie ma gwarancji, że wywołanie nie blokuje.
Ogólnie rzecz biorąc, random_device
służy do inicjowania innych generatorów utworzonych z silnikami lub adapterami silnika. Aby uzyskać więcej informacji, zobacz losowe>.<
Przykład
Poniższy kod przedstawia podstawowe funkcje tej klasy i przykładowe wyniki. Ze względu na niedeterministyczny charakter random_device
metody , losowe wartości wyświetlane w sekcji Dane wyjściowe nie będą zgodne z wynikami. Jest to normalne i oczekiwane.
// 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
Ten przykład jest uproszczony i nie jest reprezentatywny dla ogólnego przypadku użycia tego generatora. Aby zapoznać się z bardziej reprezentatywnym przykładem kodu, zobacz losowe>.<
Wymagania
Nagłówek:<losowy>
Przestrzeń nazw: std
random_device::random_device
Tworzy generator.
random_device(const std::string& = "");
Uwagi
Konstruktor inicjuje generator zgodnie z potrzebami, ignorując parametr ciągu. Zgłasza wartość typu zdefiniowanego przez implementację pochodzącego z wyjątku , jeśli random_device
nie można zainicjować obiektu .
random_device::entropy
Szacuje losowość źródła.
double entropy() const noexcept;
Uwagi
Funkcja składowa zwraca oszacowanie losowości źródła mierzonego w bitach.
random_device::operator()
Zwraca wartość losową.
result_type operator()();
Uwagi
Zwraca wartości równomiernie rozłożone w zamkniętym interwale [ min, max
] zgodnie z funkcjami min()
składowymi i max()
. Zgłasza wartość typu zdefiniowanego przez implementację pochodzącego z wyjątku , jeśli nie można uzyskać liczby losowej.