explicit random_device(const string& token = implementation-defined); // (1)
random_device() : random_device(implementation-defined) {} // (1) C++20
explicit random_device(const string& token); // (2) C++20
random_device(const random_device&) = delete; // (3)
概要
- (1) : デフォルトコンストラクタ
- (2) : トークンを受け取って乱数生成器を構築する。
- ※実装は、このトークンパラメータによって、異なるランダムのソースを使用してもよい。
- (3) : コピーコンストラクタ。コピー禁止。
- これによって、ムーブコンストラクタも自動生成されない。
有効なトークン
- Windows
- Unix 系
- Clang (libc++):
"/dev/urandom"
(デフォルト) または"/dev/random"
- GCC (libstdc++):
"default"
(デフォルト)、"/dev/urandom"
または"/dev/random"
デフォルトでは、CPU のRDRAND
命令が使用できれば (_GLIBCXX_X86_RDRAND
が定義されていれば) それを、そうでなければ/dev/urandom
から値を取得する
- Clang (libc++):
例外
例
#include <random>
int main()
{
// (1) デフォルト構築
{
std::random_device rd;
}
// (1) トークン指定
{
// UNIX系OS上固有で、ランダムソースを/dev/randomにする
std::random_device rd("/dev/random");
}
}
出力
バージョン
言語
- C++11
処理系
- Clang: ??
- GCC: 4.7.2 ✅
- ICC: ??
- Visual C++: 2010 ✅, 2012 ✅, 2013 ✅, 2015 ✅, 2017 ✅