Xtensor random::randn返回数字低于下界和高于上界的数字



我正在尝试生成形状为{10}的随机数,范围在-0.5和0.5之间

#include <iostream>
#include <xtensor/xio.hpp>
#include <xtensor/xrandom.hpp>
int main() {
xt::xarray<double> a = xt::random::randn<double>({10}, -0.5, 0.5);
std::cout << a;
return 0;
}

但是它返回的是一个数组

{-0.432735, -0.573191, -0.269675, -1.435692, -0.418144, -0.607127,
-0.350702, -0.913972, -0.494892,  0.027733}

其中-0.573191小于-1.435692大于range

根据randn的文档:

template<class T, class S, class E = random::default_engine_type>
auto xt::random::randn(const S& shape, T mean = 0, T std_dev = 1,
E& engine = random::get_default_random_engine())

函数从std::normal_distribution中提取数字,您设置平均值为-0.5,标准差为0.5。这些不是下界和上界。


您可能需要使用rand函数来代替:

template<class T, class S, class E = random::default_engine_type>
auto xt::random::rand(const S& shape, T lower = 0, T upper = 1,
E& engine = random::get_default_random_engine())

这从std::uniform_real_distribution中提取数字-所以,这不是同一件事,但它有下限和上限。

相关内容

  • 没有找到相关文章

最新更新