std::random_device::entropy
來自 cppreference.com
< cpp | numeric | random | random device
double entropy() const noexcept; |
(C++11 起) | |
獲取隨機數裝置的熵的估計值,它是一個介於 0 和 log2(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