Compartir a través de


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

Vea también

Referencia

<random>

subtract_with_carry_01 Class