std::random_device::entropy
来自cppreference.com
< cpp |
numeric | random | random device
数值库
伪随机数生成
均匀随机位生成器 | ||||
(C++20)
|
||||
引擎及引擎适配器 | ||||
(C++11)
|
||||
(C++11)
|
||||
(C++11)
|
||||
(C++11)
|
||||
(C++11)
|
||||
(C++11)
|
||||
非确定性生成器 | ||||
(C++11)
|
||||
分布 | ||||
均匀分布 | ||||
(C++11)
|
||||
(C++11)
|
||||
(C++11)
|
||||
伯努利分布 | ||||
(C++11)
|
||||
(C++11)
|
||||
(C++11)
|
||||
(C++11)
|
||||
泊松分布 | ||||
(C++11)
|
||||
(C++11)
|
||||
(C++11)
|
||||
(C++11)
|
||||
(C++11)
|
||||
正态分布 | ||||
(C++11)
|
||||
(C++11)
|
||||
(C++11)
|
||||
(C++11)
|
||||
(C++11)
|
||||
(C++11)
|
||||
采样分布 | ||||
(C++11)
|
||||
(C++11)
|
||||
(C++11)
|
||||
种子序列 | ||||
(C++11)
|
||||
C 库 | ||||
std::random_device
成员函数 | ||||
(C++11)
|
||||
生成 | ||||
(C++11)
|
||||
特征 | ||||
random_device::entropy
(C++11)
|
||||
(C++11)
|
||||
(C++11)
|
double
entropy() const noexcept;
|
(C++11 起) | |
获得随机数设备熵的估计,它是 0 与 log
2(max()+1) (等于 std::numeric_limits<unsigned int>::digits )之间的浮点数。若设备拥有 n 个状态,而其概率各为 P
0,...,P
n-1 ,则设备熵 S 定义为
S = -Σn-1
i=0P
ilog(P
i)
确定的随机数生成器(例如伪随机数生成器)拥有零熵。
返回值
设备熵的值,或若不可应用则为零。
注解
此函数在一些标准库中未完全实现。例如,版本 12 前的 LLVM libc++ 始终返回零,即使设备是非确定的(对于 libstdc++ ,见 bug 67578 )。与之相比, Microsoft Visual C++ 实现始终返回 32 ,且 boost.random 返回 10 。
Linux 内核设备 /dev/urandom 的熵可用 ioctl RNDGETENTCNT 获得—— GNU
libstdc++ 从版本 8.1 起将它用于 std::random_device::entropy()
。
示例
实现之一上的示例输出
运行此代码
#include <iostream> #include <random> int main() { std::random_device rd; std::cout << rd.entropy() << '\n'; }
可能的输出:
32