跳到内容
🛠️ToolsShed

Probability Calculator

计算单一事件、复合(AND/OR)、条件和至少一个概率。

关于此工具

理解概率对于在科学、统计、金融和游戏等众多领域做出明智决策至关重要。此概率计算器可帮助您计算各种情景下的概率——无论是评估单个事件的可能性、分析必须满足多个条件的复合事件,还是确定取决于先前结果的条件概率。通过自动化这些计算,该工具消除了手工计算错误,使概率论对学生、研究人员和专业人士都易于使用。

使用计算器非常简单:选择您要计算的概率类型(单个事件、AND/OR复合事件、条件概率或至少一个场景),输入相关值(单个概率或结果数量),工具会立即以小数和百分比形式显示结果。常见用途包括预测骰子投掷结果、计算从牌堆中抽到特定牌的概率、评估设备故障率、评估医学测试准确性,或分析多个独立或相关事件相互作用的游戏策略。

为获得准确的结果,请确保输入概率介于0到1之间,并记住'AND'表示所有事件必须发生(乘法规则),而'OR'表示至少一个事件发生(调整重叠的加法规则)。条件概率计算在医学诊断中的贝叶斯推理或质量控制检测等现实场景中特别有用,其中结果的概率在很大程度上取决于之前发生的情况。

常见问题

代码实现

from fractions import Fraction
import math

def single_event_probability(favorable: int, total: int) -> dict:
    """P(A) = favorable / total"""
    if total <= 0:
        raise ValueError("Total outcomes must be positive")
    prob = favorable / total
    frac = Fraction(favorable, total)
    return {
        "decimal": round(prob, 6),
        "fraction": f"{frac.numerator}/{frac.denominator}",
        "percentage": round(prob * 100, 4),
    }

def compound_and_probability(p_a: float, p_b: float) -> float:
    """P(A and B) = P(A) × P(B) for independent events"""
    return p_a * p_b

def compound_or_probability(p_a: float, p_b: float) -> float:
    """P(A or B) = P(A) + P(B) - P(A and B) for independent events"""
    return p_a + p_b - p_a * p_b

def at_least_one_probability(p_single: float, trials: int) -> float:
    """P(at least one) = 1 - P(none) = 1 - (1-p)^n"""
    return 1 - (1 - p_single) ** trials

# Examples
print("=== Single Event ===")
r = single_event_probability(3, 6)  # Rolling a 1, 2, or 3
print(f"P = {r['fraction']} = {r['decimal']} = {r['percentage']}%")

print("\n=== Compound (AND) ===")
p_and = compound_and_probability(1/6, 1/6)  # Two dice both show 1
print(f"P(1 and 1) = {p_and:.6f} = {p_and*100:.4f}%")

print("\n=== Compound (OR) ===")
p_or = compound_or_probability(0.5, 0.3)
print(f"P(A or B) = {p_or:.6f} = {p_or*100:.2f}%")

print("\n=== At Least One ===")
p_atleast = at_least_one_probability(1/6, 3)  # At least one 6 in 3 rolls
print(f"P(at least one 6 in 3 rolls) = {p_atleast:.6f} = {p_atleast*100:.2f}%")

Comments & Feedback

Comments are powered by Giscus. Sign in with GitHub to leave a comment.