名稱空間
變體
操作

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++ 總是返回零,即使裝置是非確定性的。相比之下,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