代码之家  ›  专栏  ›  技术社区  ›  Granzo

计算概率

  •  0
  • Granzo  · 技术社区  · 7 年前

    所以,我试图计算一对向量中特定键的概率。向量中的每个特定键都有一个特定的权重,为了计算该键的特定概率,我必须将向量中所有键的权重相加,然后将特定值除以总值。

    这是我到目前为止的情况。

      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。我会做错什么?

    提前感谢!

    1 回复  |  直到 7 年前
        1
  •  0
  •   Saram Ali Azhar    7 年前

    这是因为您使用整数和除法,它将自动只取小数点之前的部分(即整数)

    将数据类型更改为float,这应该可以解决它!