#pragma once // system includes #include namespace cpputils { template T randomNumber(T min, T max, Trandom &rng) { std::uniform_int_distribution dist{min, max}; return dist(rng); } //template //float randomNumber(float min, float max, Trandom &rng) //{ // std::uniform_real_distribution dist{min, max}; // return dist(rng); //} //template //double randomNumber(double min, double max, Trandom &rng) //{ // std::uniform_real_distribution dist{min, max}; // return dist(rng); //} template T randomNumber(T min, T max, Trandom &&rng) { std::uniform_int_distribution dist{min, max}; return dist(rng); } //template //float randomNumber(float min, float max, Trandom &&rng) //{ // std::uniform_real_distribution dist{min, max}; // return dist(rng); //} //template //double randomNumber(double min, double max, Trandom &&rng) //{ // std::uniform_real_distribution dist{min, max}; // return dist(rng); //} template T randomNumber(T max, Trandom &rng) { std::uniform_int_distribution dist{{}, max}; return dist(rng); } //template //float randomNumber(float max, Trandom &rng) //{ // std::uniform_real_distribution dist{{}, max}; // return dist(rng); //} //template //double randomNumber(double max, Trandom &rng) //{ // std::uniform_real_distribution dist{{}, max}; // return dist(rng); //} template T randomNumber(T max, Trandom &&rng) { std::uniform_int_distribution dist{{}, max}; return dist(rng); } //template //float randomNumber(float max, Trandom &&rng) //{ // std::uniform_real_distribution dist{{}, max}; // return dist(rng); //} //template //double randomNumber(double max, Trandom &&rng) //{ // std::uniform_real_distribution dist{{}, max}; // return dist(rng); //} } // namespace cpputils