C++11随机数库
2021-02-12 04:18
标签:head rop 说明 同余 比较 生成 自己 device 特定 C++11引入了新的随机数生成机制,那就是 一般情况就用标准库定义的 真随机数生成器(但有些编译器没有实现),一般可以用于生成伪随机数生成器的种子。在Linux的实现中,是读取/dev/urandom设备,因为生成真随机数需要消耗熵池里的资源,如果熵池空了,请求生成随机数的行为就会被阻塞,要等到收集足够多的环境噪声后才能继续产生真随机数。 C++11随机数库 标签:head rop 说明 同余 比较 生成 自己 device 特定 原文地址:https://www.cnblogs.com/HachikoT/p/12732426.htmlrandom随机数库
随机数库,支持多种伪随机数生成算法,多种连续和离散随机数分布算法,以及封装了真正的随机数生成引擎random_device
。对于写随机数相关的程序来说实在是太香了。随机数生成引擎和随机数分布引擎
伪随机数生成引擎比较
std::default_random_engine
就行,在各个实现中会自己决定std::default_random_engine
具体是哪种随机数生成引擎。
随机数生成引擎
计算公式
说明
std::minstd_rand
x = x * 48271 % 2147483647
线性同余序列,简单,随机性比较差
std::minstd_rand0
x = x * 16807 % 2147483647
线性同余序列,简单,随机性比较差
std::mt19937
我不知道
梅森旋转算法,随机序列周期长,处理相对耗时
std::mt19937_64
我不知道
同上,只是保证返回值有64位
std::ranlux24
我不知道
带进位减法引擎,是对线性同余算法的改进
std::ranlux48
我不知道
同上
std::knuth_b
我不知道
包装一下线性同余引擎,将其生成的序列打乱输出
真正的随机数random_device
若平台不支持random_device
则entropy
接口返回0。
下一篇:C++ 素数对猜想