std::random_device:: entropy
| Common mathematical functions | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Mathematical special functions (C++17) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Mathematical constants (C++20) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Basic linear algebra algorithms (C++26) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Data-parallel types (SIMD) (C++26) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Floating-point environment (C++11) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Complex numbers | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Numeric array (
valarray
)
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Pseudo-random number generation | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Bit manipulation (C++20) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Saturation arithmetic (C++26) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Factor operations | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Interpolations | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Generic numeric operations | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| C-style checked integer arithmetic | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Member functions | ||||
| Generation | ||||
| Characteristics | ||||
|
random_device::entropy
|
||||
|
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