home | help
std::random...ice::entropy(3)  C++ Standard Libary std::random...ice::entropy(3)

NAME
     std::random_device::entropy - std::random_device::entropy

Synopsis
	double entropy() const noexcept;  (since C++11)

	Obtains  an  estimate  of  the	random number device entropy, which is a
     floating-point
	value between 0 and log
	2(max()+1) (which is equal  to	std::numeric_limits<unsigned  int>::dig-
     its). If the
	device has n states whose individual probabilities are P
	0,...,P
	n-1, the device entropy S is defined as

	S = aan-1
	i=0 P
	ilog(P
	i)

	A  deterministic  random  number generator (e.g. a pseudo-random engine)
     has entropy
	zero.

Return value
	The value of the device entropy, or zero if not applicable.

Notes
	This function is not fully implemented in some standard  libraries.  For
     example, LLVM
	libc++ prior to version 12 always returns zero even though the device is
	non-deterministic.  In	comparison,  Microsoft Visual C++ implementation
     always returns
	32, and boost.random returns 10.

	The entropy of the Linux kernel device /dev/urandom may be obtained  us-
     ing ioctl
	RNDGETENTCNT  a  that  is what std::random_device::entropy() in GNU lib-
     stdc++ uses as
	of version 8.1.

Example
	Example output on one of the implementations

     // Run this code

      #include <iostream>
      #include <random>

      int main()
      {
	  std::random_device rd;
	  std::cout << rd.entropy() << '\n';
      }

Possible output:
      32

http://cppreference.com 	   2024.06.10	   std::random...ice::entropy(3)

home | help