FreeBSD Manual Pages
std::generate_canonical(3) C++ Standard Libary std::generate_canonical(3) NAME std::generate_canonical - std::generate_canonical Synopsis Defined in header <random> template< class RealType, std::size_t Bits, class Generator > (since C++11) RealType generate_canonical( Generator& g ); Generates a random floating point number in range \(\small [0,1)\)[0, 1). To generate enough entropy, generate_canonical() will call g() ex- actly \(\small k\)k times, where \(\small k = \max(1, \lceil \frac{b}{\log_2 R} \rceil)\)k = max(1, b / log 2 R ) and * b = std::min(Bits, std::size_t{std::numeric_limits<Real- Type>::digits}), * R = g.max() - g.min() + 1. Parameters g - generator to use to acquire entropy Return value Floating point value in range \(\small [0,1)\)[0, 1). Exceptions None except from those thrown by g Notes Some existing implementations have a bug where they may occasionally return 1.0 if RealType is float GCC #63176 LLVM #18767 MSVC STL #1074. This is LWG issue 2524. Example produce random numbers with 10 bits of randomness: this may produce only k*R distinct values // Run this code #include <random> #include <iostream> int main() { std::random_device rd; std::mt19937 gen(rd()); for(int n=0; n<10; ++n) { std::cout << std::generate_canonical<double, 10>(gen) << ' '; } } Possible output: 0.208143 0.824147 0.0278604 0.343183 0.0173263 0.864057 0.647037 0.539467 0.0583497 0.609219 See also uniform_real_distribution produces real values evenly distributed across a range (C++11) (class template) http://cppreference.com 2022.07.31 std::generate_canonical(3)
NAME | Synopsis | Parameters | Return value | Exceptions | Notes | Example | Possible output: | See also
Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=std::generate_canonical&sektion=3&manpath=FreeBSD+Ports+15.0>
