Namespaces
Variants

std::random_device:: entropy

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

Obtiene una estimación de la entropía del dispositivo de números aleatorios, que es un valor de punto flotante entre 0 y log 2 (max()+1) (que es igual a std:: numeric_limits < unsigned int > :: digits ). Si el dispositivo tiene n estados cuyas probabilidades individuales son P 0 ,...,P n-1 , la entropía del dispositivo S se define como

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

Un generador determinista de números aleatorios (por ejemplo, un motor pseudoaleatorio) tiene entropía cero.

Valor de retorno

El valor de la entropía del dispositivo, o cero si no es aplicable.

Notas

Esta función no está completamente implementada en algunas bibliotecas estándar. Por ejemplo, LLVM libc++ anterior a la versión 12 siempre retorna cero aunque el dispositivo sea no determinista. En comparación, la implementación de Microsoft Visual C++ siempre retorna 32 , y boost.random retorna 10 .

La entropía del dispositivo del kernel de Linux /dev/urandom puede obtenerse usando ioctl RNDGETENTCNT — eso es lo que std::random_device::entropy() en GNU libstdc++ utiliza a partir de la versión 8.1.

Ejemplo

Salida de ejemplo en una de las implementaciones

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

Salida posible:

32