uniform_real_distribution() 的最小值

minimum value from uniform_real_distribution()

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

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

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

double rand_num = u(e);

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

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

std::nextafter(from, to) returns fromto.

方向上的下一个可表示浮点值(可以是非正规的)

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

感谢 WhozCraig 和 T.C。更正。