std::random_device::random_device
STD:随机[医]装置:随机[医]装置
explicit random_device(const std::string& token = /*implementation-defined*/ | (1) | (since C++11) |
---|---|---|
random_device(const random_device& ) = delete; | (2) | (since C++11) |
1%29构造一个新的std::random_device
对象,使用参数。token
,如有提供,则以执行---确定的方式提供。
2%29复制构造函数被删除:std::random_device
是不可复制的。
例外
引发自定义的异常。std::exception
在失败的时候。
注记
的实现Libc++和Libstdc++期待token
为字符设备的名称,在读取时生成随机数,默认值为"/dev/urandom"
,虽然在CPU指令RDRND可用的地方,libstdc++还是使用它作为默认的。
例
演示两种常用的std::random_device
在Linux上。
二次
#include <iostream>
#include <random>
int main()
{
std::uniform_int_distribution<int> d(0, 10
std::random_device rd1; // uses RDRND or /dev/urandom
for(int n = 0; n < 10; ++n)
std::cout << d(rd1) << ' ';
std::cout << '\n';
std::random_device rd2("/dev/random" // much slower on Linux
for(int n = 0; n < 10; ++n)
std::cout << d(rd2) << ' ';
std::cout << '\n';
}
二次
可能的产出:
二次
7 10 7 0 4 4 6 9 4 7
2 4 10 6 3 2 0 6 3 7
二次
© cppreference.com
在CreativeCommonsAttribution下授权-ShareAlike未移植许可v3.0。