TrinityCore
Loading...
Searching...
No Matches
SFMTRand.cpp
Go to the documentation of this file.
1
/*
2
* This file is part of the TrinityCore Project. See AUTHORS file for Copyright information
3
*
4
* This program is free software; you can redistribute it and/or modify it
5
* under the terms of the GNU General Public License as published by the
6
* Free Software Foundation; either version 2 of the License, or (at your
7
* option) any later version.
8
*
9
* This program is distributed in the hope that it will be useful, but WITHOUT
10
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
12
* more details.
13
*
14
* You should have received a copy of the GNU General Public License along
15
* with this program. If not, see <http://www.gnu.org/licenses/>.
16
*/
17
18
#include "
SFMTRand.h
"
19
#include <algorithm>
20
#include <array>
21
#include <functional>
22
#include <random>
23
#include <ctime>
24
25
SFMTRand::SFMTRand
() noexcept
26
{
27
std::random_device dev;
28
if
(dev.entropy() > 0)
29
{
30
std::array<uint32, SFMT_N32> seed;
31
std::ranges::generate(seed, std::ref(dev));
32
33
sfmt_init_by_array(&
_state
, seed.data(), seed.size());
34
}
35
else
36
sfmt_init_gen_rand(&
_state
,
uint32
(time(
nullptr
)));
37
}
38
39
uint32
SFMTRand::RandomUInt32
() noexcept
// Output random bits
40
{
41
return
sfmt_genrand_uint32(&
_state
);
42
}
uint32
uint32_t uint32
Definition
Define.h:154
SFMTRand.h
SFMTRand::_state
sfmt_t _state
Definition
SFMTRand.h:37
SFMTRand::SFMTRand
SFMTRand() noexcept
Definition
SFMTRand.cpp:25
SFMTRand::RandomUInt32
uint32 RandomUInt32() noexcept
Definition
SFMTRand.cpp:39
common
Utilities
SFMTRand.cpp
Generated on Sun May 10 2026 02:08:51 for TrinityCore by
1.9.8