subtract_with_carry_01::seed
Utiliza el motor.
template<class Gen>
void seed(Gen& gen);
void seed(result_type x0 = 19780503UL);
Parámetros
Gen
El tipo de generador seed.gen
El generador seed.x0
Valor de inicialización.
Comentarios
condición previa: 0 < x0
La primera función seed genera valores históricos de long_lag de los valores de unsigned long tipo devuelto por invocaciones sucesivas de gen.Cada valor histórico genera concatenando los bits de low 32 de cada uno de los valores de long_lag * (word_size + 31) / 32 de la secuencia de inicialización; el valor resultante se dividido por 2.0word_size y la parte integral se descarta.Así, cada valor histórico es un valor de punto flotante mayor o igual que 0,0 y menor que 1,0, con los bits significativos de word_size .
La segunda función seed ejecuta eficazmente el código siguiente:
linear_congruential<unsigned long, 40014, 0, 2147483563> gen(x0);
seed(gen);
Ejemplo
// 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);
}
Requisitos
encabezado: <aleatorio>
espacio de nombres: std