为什么std :: uniform_real_distribution <double>会产生NaN?

Phi*_*Lab 5 c++ random std visual-c++ c++11

我想在整个双范围内生成随机数.这样做

std::uniform_real_distribution<double> doubleDist(std::numeric_limits<double>::lowest(),
                                                  std::numeric_limits<double>::max());
Run Code Online (Sandbox Code Playgroud)

然而,产生IND/NaN.我花了一段时间才明白这是根据文档:

需要a ? bb-a ? std::numeric_limits<RealType>::max()

显然std::numeric_limits<double>::max() - std::numeric_limits<double>::lowest()大于::max,因为:lowest是负的(不像::min).

为什么我不能以这种方式在最低和最高之间生成数字,背后的理由是什么?