【问题标题】:Calculating Probability计算概率
【发布时间】:2017-10-25 04:27:43
【问题描述】:

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

这是我目前所拥有的。

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

提前致谢!

【问题讨论】:

  • 整数除法。 4/5 = 0。不相关,但如果看到一个大写的变量,我希望它是一个常数......

标签: function loops vector probability std-pair


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-02
    相关资源
    最近更新 更多