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

时间:2018-09-26 11:51:25

标签: c++ c++11 visual-c++ random std

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

std::uniform_real_distribution<double> doubleDist(std::numeric_limits<double>::lowest(),
                                                  std::numeric_limits<double>::max());
但是,

产生IND / NaN。我花了一段时间才知道这是根据documentation进行的:

  

要求a ≤ bb-a ≤ std::numeric_limits<RealType>::max()

显然std::numeric_limits<double>::max() - std::numeric_limits<double>::lowest()大于::max,因为:lowest为负(unlike ::min)

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

0 个答案:

没有答案