在 Visual Studio 中创建离散分布

Creating a discrete distribution in Visual Studio

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

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::discrete_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());

不过我没用过discrete_distribution