Namensräume
Varianten
Aktionen

std::random_device::entropy

Von cppreference.com
< cpp‎ | numeric‎ | random‎ | random device
 
 
 
 
std::random_device
Memberfunktionen
Generierung
Eigenschaften des Generators
random_device::entropy
 
double entropy() const noexcept;
(seit C++11)

Ermittelt eine Schätzung der Entropie des Zufallszahlengeräts, die ein Gleitkommawert zwischen 0 und log2(max()+1) (was gleich std::numeric_limits<unsigned int>::digits ist) ist. Wenn das Gerät n Zustände mit den individuellen Wahrscheinlichkeiten P0,...,Pn-1 hat, ist die Geräteeentropie S definiert als

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

Ein deterministischer Zufallszahlengenerator (z. B. eine Pseudozufalls-Engine) hat eine Entropie von Null.

[bearbeiten] Rückgabewert

Der Wert der Geräteeentropie oder Null, falls nicht zutreffend.

[bearbeiten] Hinweise

Diese Funktion ist in einigen Standardbibliotheken nicht vollständig implementiert. Zum Beispiel gibt LLVM libc++ vor Version 12 immer Null zurück, obwohl das Gerät nicht-deterministisch ist. Im Vergleich gibt die Implementierung von Microsoft Visual C++ immer 32 zurück, und boost.random gibt 10 zurück.

Die Entropie des Linux-Kernel-Geräts /dev/urandom kann mit ioctl RNDGETENTCNT abgerufen werden — und genau das verwendet std::random_device::entropy() in GNU libstdc++ seit Version 8.1.

[bearbeiten] Beispiel

Beispielausgabe einer der Implementierungen

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

Mögliche Ausgabe

32