diff options
author | Joanna Hulboj <joanna.hulboj@isode.com> | 2017-03-29 12:43:50 (GMT) |
---|---|---|
committer | Tobias Markmann <tm@ayena.de> | 2017-03-31 09:31:21 (GMT) |
commit | 613d66b9847e9e4338a37b22b230d3177872a43c (patch) | |
tree | f8412cb315bb273e6a6d6e3e1a63b803a6aad3a9 /Swiften/Base/StdRandomGenerator.cpp | |
parent | 7663ca75731c4313dddbcde4d85f10383644a67a (diff) | |
download | swift-613d66b9847e9e4338a37b22b230d3177872a43c.zip swift-613d66b9847e9e4338a37b22b230d3177872a43c.tar.bz2 |
Use std::random instead of boost::random
Test-Infotmation:
Unit tests pass OK.
Change-Id: I1b6d3711d97daa86cccbb44aecb1b4025f2fcc8a
Diffstat (limited to 'Swiften/Base/StdRandomGenerator.cpp')
-rw-r--r-- | Swiften/Base/StdRandomGenerator.cpp | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/Swiften/Base/StdRandomGenerator.cpp b/Swiften/Base/StdRandomGenerator.cpp new file mode 100644 index 0000000..8b1dee0 --- /dev/null +++ b/Swiften/Base/StdRandomGenerator.cpp @@ -0,0 +1,33 @@ +/* + * Copyright (c) 2012-2017 Isode Limited. + * All rights reserved. + * See the COPYING file for more information. + */ + +#include <Swiften/Base/StdRandomGenerator.h> + +#include <algorithm> +#include <functional> + +namespace { + template<class T = std::mt19937, std::size_t N = T::state_size> + typename std::enable_if<!!N, T>::type createSeededRandomEngine() { + typename T::result_type random_data[N]; + std::random_device source; + std::generate(std::begin(random_data), std::end(random_data), std::ref(source)); + std::seed_seq seeds(std::begin(random_data), std::end(random_data)); + return T(seeds); + } +} + +namespace Swift { + +StdRandomGenerator::StdRandomGenerator() : generator(createSeededRandomEngine()) { +} + +int StdRandomGenerator::generateRandomInteger(int maximum) { + std::uniform_int_distribution<> distribution(0, maximum); + return distribution(generator); +} + +} |