【问题标题】:Inclusion Exclusion Principle for Calculating Probability of Unions计算并集概率的包含排除原则
【发布时间】:2017-09-01 07:40:56
【问题描述】:

假设我有一个包含 2 个或更多元素的 std::vector。现在假设我想对这个向量应用包含排除原则(例如,假设它的元素包含表示事件概率的长双精度数)。 在这种情况下,该函数的目标是,当传递一个包含 N 个元素的向量时,应用包含排除原则来找出所有这些事件并集发生的概率。

我认为这可能需要某种模板递归,但我真的很难计算公式中的每一项。似乎每当我尝试创建针对任意数量的元素进行泛化的代码时,都会让我大吃一惊,我会陷入困境或迷失方向。有人有什么建议吗?

【问题讨论】:

  • 我认为您在这里似乎遇到了数学问题而不是编程问题。或者你至少可以写一个简单的例子吗?作为输入、计算或计算草图以及预期输出的示例数据。
  • 你能把它缩小到一个更具体的问题,而不是“它让我大吃一惊,我被卡住或迷路了”吗?理想情况下,分享您尝试过的代码。这样你就可以被指向特定的方向。
  • 谷歌给我this solution

标签: c++ vector


【解决方案1】:

只要所有事件都是独立的,就不需要包含/排除。如果不是,you need more data

所有事件发生的概率都等于它们的乘积。

float probability(std::vector <float> eventProbability) {
    float prob = 1.0f;
    for(auto &p: eventProbability) prob *= p;
    return prob;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-04-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多