这段代码怎么样......
vector<double> _pc;
vector<int> _documentClassIds;
[...]
someMemberFunction(vector<int> const & documentIds) {
cout << "_pc[0] = "<< _pc[0]<<endl;
cout << "_pc[1] = "<< _pc[1]<<endl;
cout << "documentIds.size() = " << documentIds.size()<<endl;
// Normalize
for (auto documentId : documentIds)
_pc[_documentClassIds[documentId]] =
_pc[_documentClassIds[documentId]] / documentIds.size();
cout << "_pc[0] = "<< _pc[0]<<endl;
cout << "_pc[1] = "<< _pc[1]<<endl;
}
产生这个输出?
_pc[0] = 3
_pc[1] = 3
documentIds.size() = 6
_pc[0] = 0.0138889
_pc[1] = 0.0138889
答案 0 :(得分:5)
我不确定你认为问题是什么。
您有六个文档ID,因此您的for
循环运行六次。每次运行时,它会将您的_pc
数组值之一除以6。
由于0.0138888...
是3除以216(6 ^ 3),因此计算似乎是正确的。
很明显,选择哪个_pc
数组条目进行划分是同等分配的,以便每个条目分为三次,因此每个条目最终都是:
(((3 / 6) / 6) / 6) => 0.013888...