From 65779005523f8c0db019337d0b8bb8857370c118 Mon Sep 17 00:00:00 2001 From: 0xFEEDC0DE64 Date: Sun, 5 Sep 2021 21:23:00 +0200 Subject: [PATCH] random utilities now allow lvalue and rvalue references --- src/randomutils.h | 46 ++++++++++++++++++++++++++++++++++++++++++++-- src/strutils.h | 15 +++++++++++++++ 2 files changed, 59 insertions(+), 2 deletions(-) diff --git a/src/randomutils.h b/src/randomutils.h index b73e0b4..ff910d1 100644 --- a/src/randomutils.h +++ b/src/randomutils.h @@ -6,7 +6,7 @@ namespace cpputils { template -T randomNumber(T min, T max, Trandom &&rng) +T randomNumber(T min, T max, Trandom &rng) { std::uniform_int_distribution dist{min, max}; return dist(rng); @@ -27,7 +27,28 @@ T randomNumber(T min, T max, Trandom &&rng) //} template -T randomNumber(T max, Trandom &&rng) +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); @@ -47,4 +68,25 @@ T randomNumber(T max, Trandom &&rng) // 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 diff --git a/src/strutils.h b/src/strutils.h index 106ec87..f99dbba 100644 --- a/src/strutils.h +++ b/src/strutils.h @@ -62,4 +62,19 @@ std::string randomString(std::size_t length, Trandom &rng) return result; } +template +std::string randomString(std::size_t length, Trandom &&rng) +{ + constexpr const char chars[] = + "0123456789" + "ABCDEFGHIJKLMNOPQRSTUVWXYZ" + "abcdefghijklmnopqrstuvwxyz"; + + std::uniform_int_distribution dist{{}, std::size(chars) - 1}; + + std::string result(length, '\0'); + std::generate_n(std::begin(result), length, [&]() { return chars[dist(rng)]; }); + return result; +} + } // namespace cpputils