在我的程序中,我使用生成0到1之间的均匀随机数 uniform_real_distribution()
#include <random>
default_random_engine e;
uniform_real_distribution<double> u(0,1);
double rand_num = u(e);
Run Code Online (Sandbox Code Playgroud)
我想知道除了0之外,生成的随机数的最小值是多少,即两个随机数之间的最小间隙.
您可以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和TC的纠正.