#pragma once // system includes #include #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{std::numeric_limits::min(), 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{std::numeric_limits::min(), 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(Trandom &rng) { std::uniform_int_distribution dist{std::numeric_limits::min(), std::numeric_limits::max()}; return dist(rng); } //template //float randomNumber(Trandom &rng) //{ // std::uniform_real_distribution dist{{}, 1.f}; // return dist(rng); //} //template //double randomNumber(Trandom &rng) //{ // std::uniform_real_distribution dist{{}, 1.}; // return dist(rng); //} template T randomNumber(Trandom &&rng) { std::uniform_int_distribution dist{std::numeric_limits::min(), std::numeric_limits::max()}; return dist(rng); } //template //float randomNumber(Trandom &&rng) //{ // std::uniform_real_distribution dist{{}, 1.f}; // return dist(rng); //} //template //double randomNumber(Trandom &&rng) //{ // std::uniform_real_distribution dist{{}, 1.}; // return dist(rng); //} } // namespace cpputils