命名空间
变体
操作

std::random_device::entropy

来自 cppreference.com
< cpp‎ | numeric‎ | random‎ | random device
 
 
 
 
 
double entropy() const noexcept;
(自 C++11 起)

获取随机数设备熵的估计值,这是一个介于 0log
2
(max()+1)
(等于 std::numeric_limits<unsigned int>::digits) 之间的浮点值。如果该设备有 n 个状态,其各自的概率为 P
0
,...,P
n-1
,则设备熵 S 定义为

S = −∑n-1
i=0
P
i
log(P
i
)

确定性随机数生成器(例如伪随机引擎)的熵为零。

[编辑] 返回值

设备熵的值,如果不可用则为零。

[编辑] 备注

此函数在一些标准库中没有完全实现。例如,LLVM libc++ 在版本 12 之前始终返回零,即使该设备是非确定性的。相比之下,Microsoft Visual C++ 实现始终返回 32,而 boost.random 返回 10

Linux 内核设备 /dev/urandom 的熵可以使用 ioctl RNDGETENTCNT 获取,这就是 GNU libstdc++std::random_device::entropy() 从版本 8.1 开始使用的。

[编辑] 示例

在其中一个实现上的示例输出

#include <iostream>
#include <random>
 
int main()
{
    std::random_device rd;
    std::cout << rd.entropy() << '\n';
}

可能的输出

32