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