-/* Copyright (c) 2004-2019. The SimGrid Team. All rights reserved. */
+/* Copyright (c) 2004-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. */
#include "xbt/random.hpp"
#include <math.h>
-namespace simgrid {
-namespace kernel {
-namespace profile {
+namespace simgrid::kernel::profile {
double StochasticDatedValue::draw(Distribution law, std::vector<double> params)
{
switch (law) {
- case Dist_Det:
+ case Distribution::DET:
return params[0];
- case Dist_Exp:
+ case Distribution::EXP:
return simgrid::xbt::random::exponential(params[0]);
- case Dist_Unif:
+ case Distribution::UNIF:
return simgrid::xbt::random::uniform_real(params[0], params[1]);
- case Dist_Norm:
+ case Distribution::NORM:
return simgrid::xbt::random::normal(params[0], params[1]);
default:
- xbt_assert(false, "Unimplemented distribution");
- return 0;
+ xbt_die("Unimplemented distribution");
}
}
-double StochasticDatedValue::get_value()
+
+double StochasticDatedValue::get_value() const
{
return draw(value_law, value_params);
}
-double StochasticDatedValue::get_date()
+
+double StochasticDatedValue::get_date() const
{
return draw(date_law, date_params);
}
-DatedValue StochasticDatedValue::get_datedvalue()
+
+DatedValue StochasticDatedValue::get_datedvalue() const
{
DatedValue event;
event.date_ = get_date();
(e2.date_params == date_params);
}
-std::ostream& operator<<(std::ostream& out, const StochasticDatedValue& e)
-{
- out << e.date_law << " (";
- for (unsigned int i = 0; i < e.date_params.size(); i++) {
- out << e.date_params[i];
- if (i != e.date_params.size() - 1) {
- out << ",";
- }
- }
- out << ") " << e.value_law << " (";
- for (unsigned int i = 0; i < e.value_params.size(); i++) {
- out << e.value_params[i];
- if (i != e.value_params.size() - 1) {
- out << ",";
- }
- }
- out << ")";
- return out;
-}
-
-} // namespace profile
-} // namespace kernel
-} // namespace simgrid
+} // namespace simgrid::kernel::profile