newmen/versatile-diamond

View on GitHub
engine/cpp/mc/random_generator.cpp

Summary

Maintainability
Test Coverage
#include "random_generator.h"
#include <chrono>

namespace vd
{

RandomGenerator::Generator RandomGenerator::__initGenerator;
RandomGenerator::Distribution RandomGenerator::__initDistrib;

void RandomGenerator::init()
{
    typedef std::chrono::high_resolution_clock Clock;

    Clock::duration distance = Clock::now().time_since_epoch();
    __initGenerator = Generator(distance.count());
    __initDistrib = Distribution(0, distance.count());
}

RandomGenerator::RandomGenerator()
{
    static bool isInit = false;
    if (!isInit)
    {
        init();
        isInit = true;
    }

    _generator.seed(__initDistrib(__initGenerator));
}

}