首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

std::random_device::random_device

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上。

二次

代码语言:javascript
复制
#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';
}

二次

可能的产出:

二次

代码语言:javascript
复制
7 10 7 0 4 4 6 9 4 7 
2 4 10 6 3 2 0 6 3 7

二次

代码语言:txt
复制
 ? cppreference.com

在CreativeCommonsAttribution下授权-ShareAlike未移植许可v3.0。

扫码关注腾讯云开发者

领取腾讯云代金券

http://www.vxiaotou.com