diff --git a/random.hpp b/random.hpp index 9588f9c3..35fc2190 100644 --- a/random.hpp +++ b/random.hpp @@ -155,4 +155,19 @@ namespace cruft::random { std::uniform_int_distribution dist (0, N - 1); return t[dist (generator ())]; } + + + //------------------------------------------------------------------------- + template + auto + choose (ContainerT &data) + { + if (data.empty ()) + return data.end (); + + return std::next ( + data.begin (), + uniform (typename ContainerT::size_type {0}, data.size () - 1) + ); + } };