Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
Seeds the engine.
void seed(result_type x0 = 19780503UL);
template<class Gen>
void seed(Gen& gen);
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 gen() % modulus.
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_seed.cpp
// compile with: /EHsc
#include <random>
#include <iostream>
typedef std::mt19937 Myeng;
typedef std::subtract_with_carry<unsigned int, 1 << 24,
10, 24> Myceng;
int main()
{
Myeng eng;
Myceng ceng;
Myceng::result_type compval = ceng();
compval = compval; // to quiet "unused" warnings
std::cout << "M == " << Myceng::modulus << 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);
}
M == 16777216 S == 10 R == 24 min == 0 max == 16777215 a random value == 15039276 a random value == 16323925 a random value == 14283486
Requirements
Header: <random>
Namespace: std