- random[meta header]
- std[meta namespace]
- random_device[meta class]
- function[meta id-type]
- cpp11[meta cpp]
explicit random_device(const string& token = implementation-defined); // (1)
random_device(const random_device&) = delete; // (2)- string[link /reference/string/basic_string.md]
- (1) : トークンを受け取って乱数生成器を構築する。デフォルトのトークンパラメータは実装定義である。
- ※実装は、このトークンパラメータによって、異なるランダムのソースを使用してもよい。
- (2) : コピーコンストラクタ。コピー禁止。
- これによって、ムーブコンストラクタも自動生成されない。
- Windows
- Unix 系
- Clang (libc++):
"/dev/urandom"(デフォルト) または"/dev/random" - GCC (libstdc++):
"default"(デフォルト)、"/dev/urandom"または"/dev/random"
デフォルトでは、CPU のRDRAND命令が使用できれば (_GLIBCXX_X86_RDRANDが定義されていれば) それを、そうでなければ/dev/urandomから値を取得する
- Clang (libc++):
- (1) : 乱数生成器を初期化できなかった場合、
exceptionから派生した実装定義の例外オブジェクトを送出する
#include <random>
int main()
{
// (1) デフォルト構築
{
std::random_device rd;
}
// (1) トークン指定
{
// UNIX系OS上固有で、ランダムソースを/dev/randomにする
std::random_device rd("/dev/random");
}
}- C++11
- Clang: ??
- GCC:
- GCC, C++11 mode: 4.7.2
- ICC: ??
- Visual C++: 2010, 2012, 2013, 2015, 2017