在线文档教程
C++
数字 | Numerics

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。

http://en.cpPreference.com/w/cpp/数值/随机/随机[医]设备/随机[医]装置