mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-21 17:54:48 +01:00
Core/Utils: Moved rng functions to separate header and added utility functions to select a random element from a container where each element can have different chance of being selected
(cherry picked from commitae20b2ab56) (cherry picked from commit921d893c2a) (cherry picked from commit9ab10d6e68) (cherry picked from commit00c878e73a) (cherry picked from commitff9c999334) (cherry picked from commitbc94bacce4) (cherry picked from commitd5b0ffbe9b)
This commit is contained in:
@@ -20,10 +20,8 @@
|
||||
#include "Common.h"
|
||||
#include "CompilerDefs.h"
|
||||
#include "utf8.h"
|
||||
#include "SFMT.h"
|
||||
#include "Errors.h" // for ASSERT
|
||||
#include <stdarg.h>
|
||||
#include <boost/thread/tss.hpp>
|
||||
|
||||
#if COMPILER == COMPILER_GNU
|
||||
#include <sys/socket.h>
|
||||
@@ -31,61 +29,6 @@
|
||||
#include <arpa/inet.h>
|
||||
#endif
|
||||
|
||||
static boost::thread_specific_ptr<SFMTRand> sfmtRand;
|
||||
|
||||
static SFMTRand* GetRng()
|
||||
{
|
||||
SFMTRand* rand = sfmtRand.get();
|
||||
|
||||
if (!rand)
|
||||
{
|
||||
rand = new SFMTRand();
|
||||
sfmtRand.reset(rand);
|
||||
}
|
||||
|
||||
return rand;
|
||||
}
|
||||
|
||||
int32 irand(int32 min, int32 max)
|
||||
{
|
||||
ASSERT(max >= min);
|
||||
return int32(GetRng()->IRandom(min, max));
|
||||
}
|
||||
|
||||
uint32 urand(uint32 min, uint32 max)
|
||||
{
|
||||
ASSERT(max >= min);
|
||||
return GetRng()->URandom(min, max);
|
||||
}
|
||||
|
||||
uint32 urandms(uint32 min, uint32 max)
|
||||
{
|
||||
ASSERT(max >= min);
|
||||
ASSERT(INT_MAX/IN_MILLISECONDS >= max);
|
||||
return GetRng()->URandom(min * IN_MILLISECONDS, max * IN_MILLISECONDS);
|
||||
}
|
||||
|
||||
float frand(float min, float max)
|
||||
{
|
||||
ASSERT(max >= min);
|
||||
return float(GetRng()->Random() * (max - min) + min);
|
||||
}
|
||||
|
||||
uint32 rand32()
|
||||
{
|
||||
return GetRng()->BRandom();
|
||||
}
|
||||
|
||||
double rand_norm()
|
||||
{
|
||||
return GetRng()->Random();
|
||||
}
|
||||
|
||||
double rand_chance()
|
||||
{
|
||||
return GetRng()->Random() * 100.0;
|
||||
}
|
||||
|
||||
Tokenizer::Tokenizer(const std::string &src, const char sep, uint32 vectorReserve)
|
||||
{
|
||||
m_str = new char[src.length() + 1];
|
||||
|
||||
Reference in New Issue
Block a user