#include "smat.h" #include #include #include #include #include #include #include #include #ifdef linux #include #endif #include template class genrand_limit { class mt19937_new_initializer { unsigned x, c; public: explicit mt19937_new_initializer(unsigned i = 1) : x(i), c(0) { } unsigned operator()() { return ++c == 1 ? x : x = (1812433253U * (x ^ (x >> 30)) + c - 1); } }; mt19937_new_initializer inimt; boost::mt19937 genmt; double divisor; public: genrand_limit(unsigned seed = 7U, Elem u = std::numeric_limits::max()) : inimt(seed), genmt(inimt), divisor((std::numeric_limits::max() + 1.0) / (u + 1.0)) {} Elem operator()() { return static_cast(genmt() / divisor); } }; int main() { std::vector v(25); generate(v.begin(), v.end(), genrand_limit(4357U)); for (std::vector::iterator i = v.begin(); i != v.end(); ++i) std::cout << *i << ((i - v.begin()) % 5 == 4 ? '\n' : ' '); return EXIT_SUCCESS; }