计算概率
Calculating Probability
因此,我正在尝试计算对向量中特定键的概率。向量中的每个特定键都有特定的权重,为了计算该键的特定概率,我必须将向量中所有键的权重加在一起,然后将特定值除以总数。
这是我目前所拥有的。
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。我可能做错了什么?
提前致谢!
这是因为你用的是整数除法,它会自动取小数点前的部分(是整数)
将数据类型更改为 float,这应该可以解决问题![=10=]
因此,我正在尝试计算对向量中特定键的概率。向量中的每个特定键都有特定的权重,为了计算该键的特定概率,我必须将向量中所有键的权重加在一起,然后将特定值除以总数。
这是我目前所拥有的。
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。我可能做错了什么?
提前致谢!
这是因为你用的是整数除法,它会自动取小数点前的部分(是整数)
将数据类型更改为 float,这应该可以解决问题![=10=]