32 #ifndef VSMC_CXX11_RANDOM_HPP
33 #define VSMC_CXX11_RANDOM_HPP
37 #if VSMC_HAS_CXX11LIB_RANDOM
41 namespace vsmc {
namespace cxx11 {
43 using std::linear_congruential_engine;
44 using std::mersenne_twister_engine;
45 using std::subtract_with_carry_engine;
46 using std::discard_block_engine;
47 using std::independent_bits_engine;
48 using std::shuffle_order_engine;
49 using std::minstd_rand0;
50 using std::minstd_rand;
52 using std::mt19937_64;
53 using std::ranlux24_base;
54 using std::ranlux48_base;
58 using std::default_random_engine;
61 using std::generate_canonical;
62 using std::uniform_int_distribution;
63 using std::uniform_real_distribution;
64 using std::bernoulli_distribution;
65 using std::binomial_distribution;
66 using std::geometric_distribution;
67 using std::negative_binomial_distribution;
68 using std::poisson_distribution;
69 using std::exponential_distribution;
70 using std::gamma_distribution;
71 using std::weibull_distribution;
72 using std::extreme_value_distribution;
73 using std::normal_distribution;
74 using std::lognormal_distribution;
75 using std::chi_squared_distribution;
76 using std::cauchy_distribution;
77 using std::fisher_f_distribution;
78 using std::student_t_distribution;
79 using std::discrete_distribution;
80 using std::piecewise_constant_distribution;
81 using std::piecewise_linear_distribution;
85 #else // VSMC_HAS_CXX11LIB_RANDOM
87 #include <boost/random.hpp>
88 #include <boost/cstdint.hpp>
90 namespace vsmc {
namespace cxx11 {
92 using ::boost::random::linear_congruential_engine;
93 using ::boost::random::mersenne_twister_engine;
94 using ::boost::random::subtract_with_carry_engine;
95 using ::boost::random::discard_block_engine;
96 using ::boost::random::independent_bits_engine;
97 using ::boost::random::shuffle_order_engine;
98 using ::boost::random::minstd_rand0;
99 using ::boost::random::minstd_rand;
100 using ::boost::random::mt19937;
101 using ::boost::random::mt19937_64;
103 typedef ::boost::random::subtract_with_carry_engine<
104 ::boost::uint32_t, 24, 10, 24> ranlux24_base;
106 typedef ::boost::random::subtract_with_carry_engine<
107 ::boost::uint64_t, 48, 5, 12> ranlux48_base;
108 using ::boost::random::ranlux24;
109 using ::boost::random::ranlux48;
110 using ::boost::random::knuth_b;
112 typedef ::boost::random::mt19937 default_random_engine;
114 using ::boost::random::seed_seq;
115 using ::boost::random::generate_canonical;
116 using ::boost::random::uniform_int_distribution;
117 using ::boost::random::uniform_real_distribution;
119 typedef ::boost::random::bernoulli_distribution<double> bernoulli_distribution;
120 using ::boost::random::binomial_distribution;
121 using ::boost::random::geometric_distribution;
122 using ::boost::random::negative_binomial_distribution;
123 using ::boost::random::poisson_distribution;
124 using ::boost::random::exponential_distribution;
125 using ::boost::random::gamma_distribution;
126 using ::boost::random::weibull_distribution;
127 using ::boost::random::extreme_value_distribution;
128 using ::boost::random::normal_distribution;
129 using ::boost::random::lognormal_distribution;
130 using ::boost::random::chi_squared_distribution;
131 using ::boost::random::cauchy_distribution;
132 using ::boost::random::fisher_f_distribution;
133 using ::boost::random::student_t_distribution;
134 using ::boost::random::discrete_distribution;
135 using ::boost::random::piecewise_constant_distribution;
136 using ::boost::random::piecewise_linear_distribution;
140 #endif // VSMC_HAS_CXX11LIB_RANDOM
142 #endif // VSMC_CXX11_RANDOM_HPP