Storm 1.14.0.1
A Modern Probabilistic Model Checker
Loading...
Searching...
No Matches
random.h
Go to the documentation of this file.
1#pragma once
2
3#include <boost/random.hpp>
4#include <cstdint>
5#include <random>
6
8
9namespace storm {
10namespace utility {
11template<typename ValueType>
13 public:
15 RandomProbabilityGenerator(uint64_t seed);
16 ValueType random() const;
17 uint64_t random_uint(uint64_t min, uint64_t max);
18};
19
20template<>
22 public:
24 RandomProbabilityGenerator(uint64_t seed);
25 double random();
26 uint64_t random_uint(uint64_t min, uint64_t max);
27
28 private:
29 std::uniform_real_distribution<double> distribution;
30 std::mt19937 engine;
31};
32
33template<>
34class RandomProbabilityGenerator<storm::RationalNumber> {
35 public:
38 RationalNumber random();
39 uint64_t random_uint(uint64_t min, uint64_t max);
40
41 private:
42 std::uniform_int_distribution<uint64_t> distribution;
43 std::mt19937 engine;
44};
45
47 public:
49 bool random(boost::mt19937& engine);
50
51 private:
52 boost::random::bernoulli_distribution<> distribution;
53};
54
56 public:
58 double random(boost::mt19937& engine);
59
60 private:
61 boost::random::exponential_distribution<> distribution;
62};
63
64} // namespace utility
65} // namespace storm
bool random(boost::mt19937 &engine)
Definition random.cpp:39
double random(boost::mt19937 &engine)
Definition random.cpp:45
uint64_t random_uint(uint64_t min, uint64_t max)
Definition random.cpp:33
ValueType max(ValueType const &first, ValueType const &second)
ValueType min(ValueType const &first, ValueType const &second)