Partager via


subtract_with_carry_01::seed

Injecte le moteur.

template<class Gen>
    void seed(Gen& gen);
void seed(result_type x0 = 19780503UL);

Paramètres

  • Gen
    Le type du générateur de départ.

  • gen
    Le concepteur de départ.

  • x0
    La valeur initiale.

Notes

Condition préalable : 0 < x0

La première fonction de départ génère des valeurs historique d' long_lag les valeurs de type unsigned long retournées par les appels successifs d' gen.Chaque valeur historique est générée en concaténant les bits du bas 32 de chacune de valeurs d' long_lag * (word_size + 31) / 32 de la séquence d'initialisation ; la valeur résultante est ensuite divisé par 2.0word_size et la partie entière est ignorée.Ainsi, chaque valeur historique est une valeur à virgule flottante supérieur ou égal à 0,0 et inférieure à 1,0, avec les bits significatifs d' word_size .

La deuxième fonction de départ exécute efficacement le code suivant :

    linear_congruential<unsigned long, 40014, 0, 2147483563> gen(x0);
    seed(gen);

Exemple

 

// std_tr1__random__subtract_with_carry_01_seed.cpp 
// compile with: /EHsc 
#include <random> 
#include <iostream> 
 
typedef std::mt19937 Myeng; 
typedef std::subtract_with_carry_01<float, 24, 10, 24> Myceng; 
int main() 
    { 
    Myeng eng; 
    Myceng ceng; 
    Myceng::result_type compval = ceng(); 
 
    compval = compval;  // to quiet "unused" warnings 
 
    std::cout << "W == " << Myceng::word_size << std::endl; 
    std::cout << "S == " << Myceng::short_lag << std::endl; 
    std::cout << "R == " << Myceng::long_lag << std::endl; 
 
    std::cout << "min == " << ceng.min() << std::endl; 
    std::cout << "max == " << ceng.max() << std::endl; 
 
    ceng.seed(); // reseed base engine 
    std::cout << "a random value == " << ceng() << std::endl; 
    std::cout << "a random value == " << ceng() << std::endl; 
    std::cout << "a random value == " << ceng() << std::endl; 
 
    Myceng ceng2(eng); // construct with generator 
    ceng2.seed(eng);  // seed with generator 
 
    Myceng ceng3(5UL);  // construct with unsigned long seed 
    ceng3.seed(5UL);  // seed with unsigned long 
 
    return (0); 
    } 
 
  

Configuration requise

en-tête : <random>

l'espace de noms : DST

Voir aussi

Référence

<random>

subtract_with_carry_01 Class