##// END OF EJS Templates
Completes fuzzing test structure by setting initial range for the time controller
Completes fuzzing test structure by setting initial range for the time controller

File last commit:

r1206:9f9ab053f00b
r1209:324a3ee21c58
Show More
FuzzingUtils.h
41 lines | 1.1 KiB | text/x-c | CLexer
#ifndef SCIQLOP_FUZZINGUTILS_H
#define SCIQLOP_FUZZINGUTILS_H
#include <random>
/**
* Class that proposes random utility methods
*/
class RandomGenerator {
public:
/// @return the unique instance of the random generator
static RandomGenerator &instance();
/// Generates a random double between [min, max]
double generateDouble(double min, double max);
/// Generates a random int between [min, max]
int generateInt(int min, int max);
/// Returns a random element among the elements of a container. If the container is empty, returns an element built by default
template <typename T, typename ValueType = typename T::value_type>
ValueType randomChoice(const T& container);
private:
std::mt19937 m_Mt;
explicit RandomGenerator();
};
template<typename T, typename ValueType>
ValueType RandomGenerator::randomChoice(const T &container)
{
if(container.empty()){
return ValueType{};
}
auto randomIndex = generateInt(0, container.size() - 1);
return container.at(randomIndex);
}
#endif // SCIQLOP_FUZZINGUTILS