所以,我试图计算一对矢量中特定键的概率。向量中的每个特定键具有特定权重,并且为了计算该键的特定概率,我必须将向量内的所有键的权重加在一起,然后将该特定除以总数。
这是我到目前为止所拥有的。
double probability(KEY_T key) const
{
int MAX = 0;
int TARGET = 0;
int size = _valueToWeightMap.size();
for (int x = 0; x < size; x++)
{
if (_valueToWeightMap[x].first == key)
{
TARGET = _valueToWeightMap[x].second;
}
MAX += _valueToWeightMap[x].second;
}
return (TARGET / MAX);
}
这是主要的。
int main()
{
DiscreteDistribution<std::string> dist1;
dist1.add("Helmet", 1);
dist1.add("Gloves", 5);
dist1.add("cloud", 8);
std::cout << dist1.probability("cloud") << std::endl;
system("pause");
出于某种原因,我一直得到结果0.我能做错什么?
提前致谢!
答案 0 :(得分:0)
这是因为你使用整数和除法,它会自动只取小数前的部分(是一个整数)
将数据类型更改为float,应修复它!