Namespaces
Variants

std:: generate_canonical

From cppreference.net
Défini dans l'en-tête <random>
template < class RealType, std:: size_t Bits, class Generator >
RealType generate_canonical ( Generator & g ) ;
(depuis C++11)

Génère un nombre flottant aléatoire dans l'intervalle [ 0 , 1 ) .

Pour générer suffisamment d'entropie, generate_canonical ( ) appellera g ( ) exactement k fois, où k = max(1, ⌈ b / log 2 R ⌉) et

Table des matières

Paramètres

g - générateur à utiliser pour acquérir l'entropie

Valeur de retour

Valeur à virgule flottante dans l'intervalle [ 0 , 1 ) .

Exceptions

Aucune exception sauf celles levées par g .

Notes

Certaines implémentations existantes contiennent un bogue où elles peuvent occasionnellement retourner 1.0 si RealType est float GCC #63176 LLVM #18767 MSVC STL #1074 . Ceci correspond à LWG issue 2524 .

Exemple

Produire des nombres aléatoires avec 10 bits d'aléatoire : cela peut produire seulement k * R valeurs distinctes.

#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';
}

Sortie possible :

0.208143 0.824147 0.0278604 0.343183 0.0173263 0.864057 0.647037 0.539467 0.0583497 0.609219

Voir aussi

produit des valeurs réelles uniformément réparties sur une plage
(modèle de classe)