namespace std {
namespace tr1 {
// UTILITIES
template<class Engine,
class Dist>
class variate_generator;
// SIMPLE ENGINES
template<class UIntType,
UIntType A, UIntType C, UIntType M>
class linear_congruential;
template<class UIntType,
int W, int N, int M, int R,
UIntType A, int U, int S,
UIntType B, int T, UIntType C, int L>
class mersenne_twister;
template<class IntType,
IntType M, int S, int R>
class subtract_with_carry;
template<class RealType,
int W, int S, int R>
class subtract_with_carry_01;
class random_device;
// COMPOUND ENGINES
template<class Engine,
int P, int R>
class discard_block;
template<class Engine1, int S1,
class Engine2, int S2>
class xor_combine;
// ENGINES WITH PREDEFINED PARAMETERS
typedef linear_congruential<unsigned long, 16807, 0, 2147483647> minstd_rand0;
typedef linear_congruential<unsigned long, 48271, 0, 2147483647> minstd_rand;
typedef mersenne_twister<ui-type, 32, 624,
397, 31,0x9908b0df, 11, 7, 0x9d2c5680, 15, 0xefc60000, 18> mt19937;
typedef subtract_with_carry_01<float, 24, 10, 24> ranlux_base_01;
typedef subtract_with_carry_01<double, 48, 10, 24> ranlux64_base_01;
typedef discard_block<subtract_with_carry<i-type,
1 << 24, 10, 24>, 223, 24> ranlux3;
typedef discard_block<subtract_with_carry<i-type,
1 << 24, 10, 24>, 389, 24> ranlux4;
typedef discard_block<subtract_with_carry_01<float, 24, 10, 24>,
223, 24> ranlux3_01;
typedef discard_block<subtract_with_carry_01<float, 24, 10, 24>,
389, 24> ranlux4_01;
// DISTRIBUTIONS
template<class IntType = int>
class uniform_int;
template<class RealType = double>
class bernoulli_distribution;
template<class IntType = int, class RealType = double>
class geometric_distribution;
template<class IntType = int, class RealType = double>
class poisson_distribution;
template<class IntType = int, class RealType = double>
class binomial_distribution;
template<class RealType = double>
class uniform_real;
template<class RealType = double>
class exponential_distribution;
template<class RealType = double>
class normal_distribution;
template<class RealType = double>
class gamma_distribution;
} // namespace tr1
} // namespace std