servatrice/common/rng_sfmt.cpp
2014-03-08 17:45:59 +01:00

22 lines
652 B
C++

#include "rng_sfmt.h"
#include <QDateTime>
#include <stdlib.h>
#include <iostream>
RNG_SFMT::RNG_SFMT(QObject *parent)
: RNG_Abstract(parent)
{
// initialize the random number generator with a 32bit integer seed (timestamp)
sfmt_init_gen_rand(&sfmt, QDateTime::currentDateTime().toTime_t());
}
unsigned int RNG_SFMT::getNumber(unsigned int min, unsigned int max)
{
// To make the random number generation thread safe, a mutex is created around the generation.
mutex.lock();
uint64_t r = sfmt_genrand_uint64(&sfmt);
mutex.unlock();
// return a random number from the interval [min, max]
return (unsigned int) (r % (max - min + 1) + min);
}