subtract_with_carry_01::seed

Seeds the engine.

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

Parameters

  • Gen
    The type of the seed generator.

  • gen
    The seed generator.

  • x0
    The seed value.

Remarks

Precondition: 0 < x0

The first seed function generates long_lag historical values from the values of type unsigned long returned by successive invocations of gen. Each historical value is generated by concatenating the low 32 bits from each of long_lag * (word_size + 31) / 32 values from the initialization sequence; the resulting value is then divided by 2.0word_size and the integral part discarded. Thus, each historical value is a floating-point value greater than or equal to 0.0 and less than 1.0, with word_size significant bits.

The second seed function effectively executes the following code:

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

Example

 

// 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); 
    } 
 
W == 24
S == 10
R == 24
min == 0
max == 1
a random value == 0.896411
a random value == 0.972982
a random value == 0.851362

Requirements

Header: <random>

Namespace: std

See Also

Reference

<random>

subtract_with_carry_01 Class