我想在整个double范围内生成随机数。这样做
std::uniform_real_distribution<double> doubleDist(std::numeric_limits<double>::lowest(),
std::numeric_limits<double>::max());
但是,产生IND / NaN。我花了一段时间才知道这是根据documentation进行的:
要求
a ≤ b
和b-a ≤ std::numeric_limits<RealType>::max()
显然std::numeric_limits<double>::max() - std::numeric_limits<double>::lowest()
大于::max
,因为:lowest
为负(unlike ::min
)。
为什么我不能以这种方式在最低和最高之间生成数字?其背后的原理是什么?