random.cpp
1 //------------------------------------------------------------------------------
2 // random.cpp
3 //------------------------------------------------------------------------------
4 //
5 // This library is free software; you can redistribute it and/or
6 // modify it under the terms of the GNU Lesser General Public
7 // License as published by the Free Software Foundation; either
8 // version 2.1 of the License, or (at your option) any later version.
9 //
10 // This library is distributed in the hope that it will be useful,
11 // but WITHOUT ANY WARRANTY; without even the implied warranty of
12 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 // Lesser General Public License for more details.
14 //
15 // You should have received a copy of the GNU Lesser General Public
16 // License along with this library; if not, write to the Free Software
17 // Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
18 // 02110-1301 USA
19 //
20 //------------------------------------------------------------------------------
21 // Copyright (C) 2010 "Zalewa" <zalewapl@gmail.com>
22 //------------------------------------------------------------------------------
23 #include "random.h"
24 
25 #include <QDateTime>
26 
27 QSharedPointer<std::mt19937> Random::generator = QSharedPointer<std::mt19937>();
28 
29 void Random::builtInInit()
30 {
31  if (Random::generator.isNull())
32  {
33  std::random_device randomDevice;
34  init(randomDevice() + QDateTime::currentDateTime().toMSecsSinceEpoch());
35  }
36 }
37 
38 void Random::init(int seed)
39 {
40  Random::generator.reset(new std::mt19937(seed));
41 }
42 
43 unsigned short Random::nextUShort(unsigned short max)
44 {
45  builtInInit();
46  return (*Random::generator.data())() % max;
47 }
static unsigned short nextUShort(unsigned short max)
Generates a new random unsigned short.
Definition: random.cpp:43
static void init(int seed)
Inits or re-inits the Random class with specified seed.
Definition: random.cpp:38