Namespaces
Variants

std:: generate_canonical

From cppreference.net
Definido en el encabezado <random>
template < class RealType, std:: size_t Bits, class Generator >
RealType generate_canonical ( Generator & g ) ;
(desde C++11)

Genera un número de punto flotante aleatorio en el rango [ 0 , 1 ) .

Para generar suficiente entropía, generate_canonical ( ) llamará a g ( ) exactamente k veces, donde k = max(1, ⌈ b / log 2 R ⌉) y

Contenidos

Parámetros

g - generador a utilizar para adquirir entropía

Valor de retorno

Valor de punto flotante en el rango [ 0 , 1 ) .

Excepciones

Ninguna excepto las lanzadas por g .

Notas

Algunas implementaciones existentes tienen un error donde ocasionalmente pueden devolver 1.0 si RealType es float GCC #63176 LLVM #18767 MSVC STL #1074 . Esto corresponde a LWG issue 2524 .

Ejemplo

Generar números aleatorios con 10 bits de aleatoriedad: esto puede producir solo k * R valores distintos.

#include <iostream>
#include <random>
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) << ' ';
    std::cout << '\n';
}

Salida posible:

0.208143 0.824147 0.0278604 0.343183 0.0173263 0.864057 0.647037 0.539467 0.0583497 0.609219

Véase también

produce valores reales distribuidos uniformemente en un rango
(plantilla de clase)