diff --git a/gecode/flatzinc/flatzinc.cpp b/gecode/flatzinc/flatzinc.cpp index e90ec61bf4..25f3baa3b8 100644 --- a/gecode/flatzinc/flatzinc.cpp +++ b/gecode/flatzinc/flatzinc.cpp @@ -2040,7 +2040,7 @@ namespace Gecode { namespace FlatZinc { // Assign uniform_int random values for (size_t i = 0; i < restart_data().uniform_range_int.size(); ++i) { const auto& range = restart_data().uniform_range_int[i]; - const int rndVal = range.first + _random(static_cast(range.second - range.first)); + const int rndVal = range.first + _random(static_cast(range.second - range.first + 1)); rel(*this, on_restart_iv[base + i], IRT_EQ, rndVal); } base += restart_data().uniform_range_int.size(); @@ -2164,7 +2164,7 @@ namespace Gecode { namespace FlatZinc { for (size_t i = 0; i < restart_data().uniform_range_float.size(); ++i) { const auto& range = restart_data().uniform_range_float[i]; /* rndVal will be an element of [range.first, range.second] */ - const FloatVal rndVal = (static_cast(_random(INT_MAX)) / INT_MAX)*(range.second - range.first) + range.first; + const FloatVal rndVal = (static_cast(_random(INT_MAX)) / (INT_MAX - 1))*(range.second - range.first) + range.first; rel(*this, on_restart_fv[base + i], FRT_EQ, rndVal); } base += restart_data().uniform_range_float.size();