Program Listing for File random.h
↰ Return to documentation for file (fields2cover/utils/random.h
)
//=============================================================================
// Copyright (C) 2021-2024 Wageningen University - All Rights Reserved
// Author: Gonzalo Mier
// BSD-3 License
//=============================================================================
#pragma once
#ifndef FIELDS2COVER_UTILS_RANDOM_H_
#define FIELDS2COVER_UTILS_RANDOM_H_
#include <time.h>
#include <limits>
#include <random>
#include <boost/math/constants/constants.hpp>
#include "fields2cover/types/Point.h"
#include "fields2cover/types/LineString.h"
#include "fields2cover/types/LinearRing.h"
#include "fields2cover/types/Field.h"
#include "fields2cover/types/Cell.h"
namespace f2c {
class Random {
public:
explicit Random(uint32_t seed = static_cast<uint32_t>(time(NULL)));
~Random();
Random(const Random&);
Random &operator=(const Random&);
Random(Random&&);
Random &operator=(Random&&);
public:
double getRandomDouble();
double getRandomLinear(double min, double max);
double getRandomExp(double min, double max);
double getRandomExpDist(double lambda);
double getAngleRandom();
f2c::types::Cell generateRandCell(double area, int n_sides,
double min_width = 0.5, double max_width = 1.0);
f2c::types::Field generateRandField(double area, int n_sides,
double min_width = 0.5, double max_width = 1.0);
f2c::types::Cell genConvexCell(double area, size_t n_sides = 4);
f2c::types::Field genConvexField(double area, size_t n_sides = 4);
f2c::types::Cell genNonConvexCell(double area);
f2c::types::Field genNonConvexField(double area);
private:
std::mt19937 mt_;
};
} // namespace f2c
#endif // FIELDS2COVER_UTILS_RANDOM_H_