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
;
|
(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