在Visual Studio中创建离散分发

Creating a discrete distribution in Visual Studio

本文关键字:创建 Visual Studio      更新时间:2023-10-16

我想在Visual Studio中用121个整数创建自己的离散分布。这是我正在尝试的代码:

std::vector< int> weights(121);
for (int i = 0; i < 121; i++)
{
    weights[i] = (teamData[i]).S(); // some numbers from my program data 
}
std::discrete_distribution<> dist(weights.begin(), weights.end());

我得到情报错误:

1   IntelliSense: no instance of constructor "std::discrete_distribution<_Ty>::discrete_distribution [with _Ty=int]" matches the argument list
        argument types are: (std::_Vector_iterator<std::_Vector_val<std::_Simple_types<int>>>, std::_Vector_iterator<std::_Vector_val<std::_Simple_types<int>>>)    

当我编译时,我得到:

错误1错误C2661:"std::discrete_distribution::disciste_distribution":没有重载函数需要2个参数
有人知道该怎么解决吗?

http://en.cppreference.com/w/cpp/numeric/random/discrete_distribution/discrete_distribution

你正在用迭代器初始化它,所以你需要使用这个构造函数

template< class InputIt >
discrete_distribution( InputIt first, InputIt last );

所以我猜应该是std::discrete_distribution<int&> dist(weights.begin(), weights.end());

但我以前从未使用过离散分布。