在我的程序中,我使用uniform_real_distribution()
#include <random>
default_random_engine e;
uniform_real_distribution<double> u(0,1);
double rand_num = u(e);
我想知道除了0之外,生成的随机数的最小值是多少,即两个随机数之间的最小间隙。
答案 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.为了纠正。