在我的程序中,我使用生成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的纠正.