uniform_real_distribution()的最小值

时间:2015-02-02 06:35:52

标签: c++ c++11 random

在我的程序中,我使用uniform_real_distribution()

生成0到1之间的均匀随机数
#include <random>

default_random_engine e;
uniform_real_distribution<double> u(0,1);

double rand_num = u(e);

我想知道除了0之外,生成的随机数的最小值是多少,即两个随机数之间的最小间隙。

1 个答案:

答案 0 :(得分:5)

您可以使用std::nextafter来回答这个问题。

std::nextafter(from, to)from方向返回to的下一个可表示浮点值(可能是非正规值)。

对于from == 0.0的情况,您还可以使用std::numeric_limits<F>::denorm_min(),其中F是您关注的浮点类型。虽然std::numeric_limits<F>::denorm_min()始终返回最小正可表示值,但它可能是非规范化数字。如果F不支持非正规数,则返回值将等于std::numeric_limits<F>::min()

感谢WhozCraig和T.C.为了纠正。