#pragma once #include namespace utility { class Random { public: class Range { public: std::size_t get(); protected: friend class Random; Range(std::mt19937* const, const std::size_t, const std::size_t); private: std::mt19937* const generator_; std::uniform_int_distribution distribution_; }; Random(); Range makeRange(const std::size_t a, const std::size_t b); private: std::random_device device_; std::mt19937 generator_; }; }