int GRASP::pickARandomNumberBetween(int begin, int end){ typedef boost::mt19937 RNGType; RNGType rng; rng.seed(std::random_device()()); boost::uniform_int<> begin_to_end( begin, end ); boost::variate_generator< RNGType, boost::uniform_int<> > dice(rng, begin_to_end); return dice(); }
inline bool random_rng_k(const RNGType &, const std::string &filename) { using result_type = typename RNGType::result_type; using key_type = typename RNGType::key_type; std::ifstream kat(filename); mckl::Vector<result_type> k; result_type x; while (kat >> x) k.push_back(x); kat.close(); RNGType rng; mckl::Vector<result_type> r(k.size()); mckl::rand(rng, k.size(), r.data()); key_type kk; for (std::size_t i = 0; i != kk.size(); ++i) kk[i] = static_cast<typename key_type::value_type>(rng()); rng.seed(kk); key_type rk = rng.key(); return k.size() != 0 && k == r && kk == rk; }
void RNG :: Randomise( int n ) { mNeedRandomise = false; mLastSeed = n; theGen.seed( n ); theGen(); }