У меня есть строка:
std::uniform_real_distribution<T> distribution(std::numeric_limits<T>::lowest(),
std::numeric_limits<T>::max());
Компилируется, но вылетает при отладке (VS 2017CE). Я предполагаю, что согласно документации std::uniform_real_distribution
:
Требуется, чтобы a ≤ b
и b-a ≤ std::numeric_limits<RealType>::max()
когда мои b
равны ::max()
, а a
равны ::lowest()
, условие:
b-a ≤ std::numeric_limits<RealType>::max()
не выполняется, поскольку b-a
в основном удваивает значение max
. Есть ли способ обойти это так, чтобы я оставил такой широкий диапазон чисел? ::min()
работает отлично, но пропускает отрицательные значения. Проблема возникает только для плавающих чисел.