.. _program_listing_file_fields2cover_utils_random.h: Program Listing for File random.h ================================= |exhale_lsh| :ref:`Return to documentation for file ` (``fields2cover/utils/random.h``) .. |exhale_lsh| unicode:: U+021B0 .. UPWARDS ARROW WITH TIP LEFTWARDS .. code-block:: cpp //============================================================================= // 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 #include #include #include #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(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_