std::random_device::entropy

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

獲得隨機數設備熵的估計,它是 0log2(max()+1)(等於 std::numeric_limits<unsigned int>::digits)之間的浮點數。若設備擁有 n 個狀態,而其概率各為 P0,...,Pn-1,則設備熵 S 定義為

S = −∑n-1
i=0
Pilog(Pi)

確定的隨機數生成器(例如偽隨機數生成器)擁有零熵。

[編輯] 返回值

設備熵的值,或若不可應用則為零。

[編輯] 註解

此函數在一些標準庫中未完全實現。例如,版本 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