- Main Page
- Namespaces
- Classes
- Files

# randomint.hpp

    00001 #ifndef RANDOM_HPP_
    00002 #define RANDOM_HPP_
    00003
    00004 #include <algorithm>
    00005 #include <cstdlib>
    00006
    00017 class randomint
    00018 {
    00019 public:
    00023   randomint(int low, int high);
    00025   int operator()() const;
    00026 private:
    00027   int const low_;
    00028   int const high_;
    00029   int const mod_;
    00030   int const max_;
    00031 };
    00032
    00033 inline randomint::randomint(int low, int high)
    00034 : low_(std::min(low, high)),
    00035   high_(std::max(low, high)),
    00036   mod_(high_ - low_ + 1),
    00037   max_(RAND_MAX - RAND_MAX % mod_)
    00038 {}
    00039
    00040 inline int randomint::operator()()
    00041 const
    00042 {
    00043   int r;
    00044   while ((r = std::rand()) > max_)
    00045     ;
    00046   return r % mod_ + low_;
    00047 }
    00048
    00049 #endif