假设我有一个包含2个或更多元素的std :: vector。现在假设我想将包含排除原则应用于此向量(例如,假设其元素包含表示事件概率的长双精度)。 在这种情况下,当传递具有N个元素的向量时,目标将是此函数,以应用包含排除原则来查找所有这些事件的并集发生的概率。 < / p>
我认为这可能需要某种模板递归,但我真的很难计算公式中的每个术语。似乎任何时候我尝试创建对任意数量的元素进行推广的代码时,它会让我感到震惊并且卡住或丢失。有人提出任何建议吗?
答案 0 :(得分:1)
只要所有事件都是独立的,这并不需要包含/排除。如果他们不是you need more data。
所有事件发生的概率均等于其产品。
float probability(std::vector <float> eventProbability) {
float prob = 1.0f;
for(auto &p: eventProbability) prob *= p;
return prob;
}