##// END OF EJS Templates
Updates model after an event has been created through the colored zone
Updates model after an event has been created through the colored zone

File last commit:

r1211:08e858e2cf84
r1262:99c1ba5e139b
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