다음을 통해 공유


random_device 클래스

외부 디바이스에서 임의 시퀀스를 생성합니다.

구문

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;
   };

멤버

random_device
엔트로피
random_device::operator()

설명

이 클래스는 난수의 소스를 설명하고 ISO C++ 표준에 따라 명확하지 않거나 안전을 위해 암호화하는 것이 허용되지만 그럴 필요는 없습니다. Visual Studio 구현 시 생성된 값은 명확하지 않거나 암호화되지만 엔진 및 엔진 어댑터(예: 대부분의 애플리케이션에 선택되는 빠른 고품질 엔진인 mersenne_twister_engine)에서 생성된 생성기보다 훨씬 느리게 실행됩니다.

random_device 결과는 닫힌 범위 [ 0, 232) 내에서 균일하게 분포됩니다.

random_device는 비블로킹 호출이 수행되지 않을 수도 있습니다.

일반적으로 random_device는 엔진 또는 엔진 어댑터를 통해 생성된 다른 생성기를 시드하는 데 사용됩니다. 자세한 내용은 임의를 참조하세요><.

예시

다음 코드는 이 클래스의 기본 기능과 예제 결과를 보여줍니다. random_device의 명확하지 않은 특성 때문에 출력 섹션에 표시된 난수 값은 사용자의 결과와 일치하지 않습니다. 이는 정상적이며 예상된 결과입니다.

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

이 예제는 간단한 예제로 이러한 생성기의 일반적인 사용 사례를 대표적으로 보여주지는 않습니다. 더 대표적인 코드 예제는 임>의 코드를 참조하세요<.

요구 사항

헤더:<random>

네임스페이스: std

random_device::random_device

생성기를 생성합니다.

random_device(const std::string& = "");

설명

이 생성자는 필요에 따라 생성기를 초기화하여 문자열 매개 변수를 무시합니다. random_device를 초기화할 수 없는 경우 exception에서 파생된 구현 정의 형식의 값을 throw합니다.

random_device::entropy

소스의 임의성을 예측합니다.

double entropy() const noexcept;

설명

이 멤버 함수는 비트 단위로 측정된 소스의 임의성에 대한 예상 값을 반환합니다.

random_device::operator()

난수 값을 반환합니다.

result_type operator()();

설명

구성원 함수 min()max()에서 결정한 대로 닫힌 간격 [ min, max]에 균일하게 분포된 값을 반환합니다. 난수 값을 얻을 수 없는 경우 exception에서 파생된 구현 정의 형식의 값을 throw합니다.

참고 항목

<random>