gpt4 book ai didi

c++ - 生成E=0的浮点随机数

转载 作者:行者123 更新时间:2023-11-30 01:41:20 25 4
gpt4 key购买 nike

uniform_real_distribution 不包括右端。这意味着不可能以正确的方式生成 E=0 的随机数。如何创建具有开区间或闭区间而不是半开区间的 uniform_real_distribution

有人可能会争辩说,对负值的偏见并不重要,因为差异很小,但这仍然不完全正确。

最佳答案

你可以结合std::uniform_real_distributionstd::nextafter :

template <typename RealType = double>
auto make_closed_real_distribution(RealType a = 0.0, RealType b = 1.0) {
return std::uniform_real_distribution<RealType>(
a, std::nextafter(b, std::numeric_limits<RealType>::max()));
}

经过一番查找,这实际上是en.cppreference上提出的方法。 .

如果你想创建一个开放区间,只需在第一个参数上使用 nextafter():

template <typename RealType = double>
auto make_open_real_distribution(RealType a = 0.0, RealType b = 1.0) {
return std::uniform_real_distribution<RealType>(
std::nextafter(a, std::numeric_limits<RealType>::max()), b);
}

关于c++ - 生成E=0的浮点随机数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41445731/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com