X-Git-Url: http://bilbo.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/feb4b0363e1d0ab17462d21f646d92c5ee946671..ce354758f86f0fad1ea536f1cbc0a337267b9987:/include/xbt/random.hpp diff --git a/include/xbt/random.hpp b/include/xbt/random.hpp index 26492e2ad6..00f42ead45 100644 --- a/include/xbt/random.hpp +++ b/include/xbt/random.hpp @@ -1,4 +1,4 @@ -/* Copyright (c) 2019-2020. The SimGrid Team. All rights reserved. */ +/* Copyright (c) 2019-2023. The SimGrid Team. All rights reserved. */ /* This program is free software; you can redistribute it and/or modify it * under the terms of the license (GNU LGPL) which comes with this package. */ @@ -7,7 +7,10 @@ #define SIMGRID_XBT_RANDOM_HPP #include "xbt/base.h" +#include +#include #include +#include namespace simgrid { namespace xbt { @@ -34,6 +37,16 @@ public: */ void set_seed(int seed) { mt19937_gen.seed(seed); } + /** + * @brief Read the state of the Mersenne-Twister RNG from a file + */ + bool read_state(const std::string& filename); + + /** + * @brief Write the state of the Mersenne-Twister RNG to a file + */ + bool write_state(const std::string& filename) const; + /** * @brief Draws an integer number uniformly in range [min, max] (min and max included) * @@ -72,8 +85,7 @@ public: */ class XBT_PUBLIC StdRandom : public Random { public: - StdRandom() = default; - explicit StdRandom(int seed) : Random(seed) {} + using Random::Random; int uniform_int(int min, int max) override; double uniform_real(double min, double max) override; @@ -87,8 +99,7 @@ public: */ class XBT_PUBLIC XbtRandom : public Random { public: - XbtRandom() = default; - explicit XbtRandom(int seed) : Random(seed) {} + using Random::Random; int uniform_int(int min, int max) override; double uniform_real(double min, double max) override; @@ -111,6 +122,16 @@ void set_implem_std(); */ void set_mersenne_seed(int); +/** + * @brief Read the state of the Mersenne-Twister RNG from a file. + */ +bool read_mersenne_state(const std::string& filename); + +/** + * @brief Write the state of the Mersenne-Twister RNG to a file. + */ +bool write_mersenne_state(const std::string& filename); + /** * @brief Draws an integer number uniformly in range [min, max] (min and max included) *