Namespaces
Variants

std::random_device:: entropy

From cppreference.net
double entropy ( ) const noexcept ;
(depuis C++11)

Obtient une estimation de l'entropie du dispositif de nombres aléatoires, qui est une valeur à virgule flottante comprise entre 0 et log 2 (max()+1) (qui est égal à std:: numeric_limits < unsigned int > :: digits ). Si le dispositif possède n états dont les probabilités individuelles sont P 0 ,...,P n-1 , l'entropie du dispositif S est définie comme

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

Un générateur de nombres aléatoires déterministe (par exemple, un moteur pseudo-aléatoire) a une entropie nulle.

Valeur de retour

La valeur de l'entropie du dispositif, ou zéro si non applicable.

Notes

Cette fonction n'est pas entièrement implémentée dans certaines bibliothèques standard. Par exemple, LLVM libc++ avant la version 12 retourne toujours zéro bien que le dispositif soit non déterministe. En comparaison, l'implémentation Microsoft Visual C++ retourne toujours 32 , et boost.random retourne 10 .

L'entropie du périphérique du noyau Linux /dev/urandom peut être obtenue en utilisant ioctl RNDGETENTCNT — c'est ce que std::random_device::entropy() dans GNU libstdc++ utilise à partir de la version 8.1.

Exemple

Exemple de sortie sur l'une des implémentations

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

Sortie possible :

32