Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Returns a random value.
result_type operator()();
Remarks
The member operator returns (stored_eng1() << shift1) ^ (stored_eng2() << shift2).
Example
// std_tr1__random__operator_fn.cpp
// compile with: /EHsc
#include <random>
#include <iostream>
typedef std::subtract_with_carry<unsigned int,
1 << 24, 10, 24> Myeng1;
typedef std::linear_congruential<unsigned int,
16807, 0, (1U << 31) - 1> Myeng2;
typedef std::xor_combine<Myeng1, 1, Myeng2, 2> Myceng;
int main()
{
Myeng1 eng1;
Myeng2 eng2;
Myceng ceng;
const Myceng::base1_type& base1 = ceng.base1(); // get base engine
const Myceng::base2_type& base2 = ceng.base2(); // get base engine
Myceng::result_type compval = ceng();
compval = compval; // to quiet "unused" warnings
base1.min();
base2.min();
std::cout << "S1 == " << Myceng::shift1 << std::endl;
std::cout << "S2 == " << Myceng::shift2 << 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(eng1); // construct with generator
ceng2.seed(eng1); // seed with generator
return (0);
}
S1 == 1 S2 == 2 min == 0 max == 4294967294 a random value == 30142660 a random value == 1118486894 a random value == 2204980952
Requirements
Header: <random>
Namespace: std