diff options
Diffstat (limited to 'src/common/Utilities/Random.cpp')
-rw-r--r-- | src/common/Utilities/Random.cpp | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/src/common/Utilities/Random.cpp b/src/common/Utilities/Random.cpp index defe43d82c2..3a0cdedcf4b 100644 --- a/src/common/Utilities/Random.cpp +++ b/src/common/Utilities/Random.cpp @@ -20,8 +20,10 @@ #include "Errors.h" #include "SFMT.h" #include <boost/thread/tss.hpp> +#include <random> static boost::thread_specific_ptr<SFMTRand> sfmtRand; +static SFMTEngine engine; static SFMTRand* GetRng() { @@ -84,8 +86,13 @@ double rand_chance() return GetRng()->Random() * 100.0; } +uint32 urandweighted(size_t count, double const* chances) +{ + std::discrete_distribution<uint32> dd(chances, chances + count); + return dd(SFMTEngine::Instance()); +} + SFMTEngine& SFMTEngine::Instance() { - static SFMTEngine engine; return engine; } |