/* * random.hpp * * Created on: Sep 25, 2010 * Author: Michael J. Fischer * for use in Yale course CPSC 427a, Fall 2010 */ #pragma once #include "tools.hpp" // Discrete range random number generator class Random { private: const unsigned int seed; int range; int top; public: // Output range is [0, range-1] Random(int range, unsigned int seed) : seed(seed) { this->range = range; top = (((((RAND_MAX - range) + 1) / range) * range - 1) + range); srand(seed); } // Generate and return next random element of [0, range-1] int gen() const { int r; do { r = rand(); } while (r > top); return (r % range); } ostream& print(ostream& out) const; };