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 from
在 to
.
方向上的下一个可表示浮点值(可以是非正规的)
对于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。更正。
在我的程序中,我使用 uniform_real_distribution()
#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 from
在 to
.
对于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。更正。