随机长long生成器C++

Rom*_*man -1 c++ random int64

long long使用加密强度С++ 生成随机的解决方案是什么?(允许加强)

bam*_*s53 6

所述<random>头部提供便携式访问随机数的设备包含,潜在地,加密PRNG.

#include <random>     // random_device, uniform_int_distribution
#include <algorithm>  // generate_n
#include <iterator>   // ostream_iterator
#include <iostream>   // cout
#include <functional> // bind, ref

int main() {
    std::random_device r;
    std::uniform_int_distribution<long long> dist;

    std::generate_n(std::ostream_iterator<long long>(std::cout, "\n"), 10,
        std::bind(dist,std::ref(r)));
}
Run Code Online (Sandbox Code Playgroud)

std::random_device可能不是所有实现的加密pRNG,因此您必须检查实施文档.特别是2012年之前的VC++并没有提供非确定性的实现.VC++ 2012及更高版本使用Windows加密服务实现此功能.

其他操作系统(如Linux或Mac OS X)上的实现通常可以使用"/ dev/urandom"或"/ dev/random"或通过文件系统公开的任何其他随机设备.例如,libc ++默认使用"/ dev/urandom",在OS X上使用Yarrow算法.

我知道你排除了提升,但是boost::random_device有一个使用该平台加密服务的Windows实现.