57 lines
746 B
C++
57 lines
746 B
C++
#include "verus.h"
|
|
|
|
using namespace verus;
|
|
|
|
Random::Random()
|
|
{
|
|
std::random_device rd;
|
|
Seed(rd());
|
|
}
|
|
|
|
Random::Random(UINT32 seed) :
|
|
_mt(seed)
|
|
{
|
|
}
|
|
|
|
Random::~Random()
|
|
{
|
|
}
|
|
|
|
UINT32 Random::Next()
|
|
{
|
|
return _mt();
|
|
}
|
|
|
|
double Random::NextDouble()
|
|
{
|
|
return static_cast<double>(Next()) / std::numeric_limits<UINT32>::max();
|
|
}
|
|
|
|
float Random::NextFloat()
|
|
{
|
|
return static_cast<float>(Next()) / std::numeric_limits<UINT32>::max();
|
|
}
|
|
|
|
void Random::NextArray(UINT32* p, int num)
|
|
{
|
|
VERUS_FOR(i, num)
|
|
p[i] = Next();
|
|
}
|
|
|
|
void Random::NextArray(float* p, int num)
|
|
{
|
|
VERUS_FOR(i, num)
|
|
p[i] = NextFloat();
|
|
}
|
|
|
|
void Random::NextArray(Vector<BYTE>& v)
|
|
{
|
|
VERUS_FOREACH(Vector<BYTE>, v, it)
|
|
*it = Next();
|
|
}
|
|
|
|
void Random::Seed(UINT32 seed)
|
|
{
|
|
_mt.seed(seed);
|
|
}
|