计算工具 · 数学计算

概率计算器

古典/条件/贝叶斯

✓本地处理 · 不上传 ✓免费 · 无需登录 ✓无次数限制 累计 133 次使用
— —
公式代入逐步展开 · 概率精确推导
经典示例一键载入
概念速查古典 · 独立 · 条件 · 贝叶斯 · 二项

古典概型:有限个等可能基本事件下,P(A) = 有利结果数 / 总结果数。如掷一枚均匀骰子得 6:1/6 ≈ 0.1667。

独立事件:A、B 互不影响时 P(A∩B) = P(A)·P(B)、P(A∪B) = P(A)+P(B)−P(A)P(B);n 次独立重复「至少发生一次」= 1 − (1−p)ⁿ(抽卡保底直觉的来源)。

条件概率:在 B 已发生的前提下 A 的概率 P(A|B) = P(A∩B) / P(B)。

贝叶斯定理:P(A|B) = P(B|A)P(A) / [P(B|A)P(A) + P(B|¬A)P(¬A)]。低基础率下即便检测很准,阳性者真患病的概率也可能很低——经典「假阳性悖论」。

二项分布:n 次独立试验、每次成功概率 p,恰好 k 次成功 = C(n,k)·pᵏ·(1−p)ⁿ⁻ᵏ,期望 np、方差 np(1−p)。

就绪 · 纯本地计算,组合数走 BigInt 精确、概率以双精度浮点
第一节

关于本工具

About

抛一枚硬币三次,连续两次正面的概率是多少?多数人会算错,因为“条件”改变了样本空间。输入事件与条件,工具按古典概型、条件概率或贝叶斯公式直接输出数值与推导路径。所有计算在浏览器内完成,公式不离开本地,适合考试验算、决策树分析或贝叶斯推理练习。

使用场景

壹

质检抽检方案评估

电子厂质检员小王面临两难:按国标每批抽 125 个,但产线 24 小时不停,抽检太多影响出货。他想知道,如果只抽 50 个,漏掉 2% 以上不良品的概率是多少。使用本工具的「二项分布」计算器,输入批量 1000、不良率 2%、抽检数 50,得到漏检概率约 36%。这个数字让小王说服主管:必须维持原方案,否则每三批就有一批带病出货。

贰

保险续保决策

车险到期前一周,李师傅收到两家报价:A 公司保费 3200 元,B 公司 2800 元但免赔额高 500 元。他纠结的是——过去三年他每年出险 0-1 次,概率约 0.3。用「条件概率」算:给定出险概率 0.3,选 B 方案比 A 方案多承担 500×0.3=150 元期望损失,加上保费差 400 元,总期望支出反而多 250 元。数字一出,他直接续了 A 公司。

叁

校园社团活动抽奖

学生会主席筹备迎新晚会,预算 500 元买 100 个盲盒,其中 10 个含大奖。他担心:如果前 20 个同学每人抽一个都没中大奖,剩余 80 个盲盒里大奖概率是不是变高了?用「不放回抽样的条件概率」计算:在前 20 次无大奖的条件下,第 21 次抽中大奖的概率是 10/80=12.5%,比初始的 10% 高了 2.5 个百分点。他据此调整了现场主持词,鼓励大家继续排队。

肆

外卖备货量预测

面馆老板老张每天备 50 份招牌牛肉面,但周末常不够卖。他统计了 3 个月数据:周末爆单(售罄)的概率是 40%。用「贝叶斯定理」更新:如果今天下雨(周末下雨概率 60%),爆单概率会变成多少?代入先验概率 0.4、似然比(下雨天爆单率 0.8 vs 非下雨天 0.2),算得后验概率约 73%。从此下雨周末他直接备 80 份,少卖 30 份的损失远小于损失 30 个客单。

伍

临床试验样本量估算

医学研究生小陈设计新药 II 期试验,预期有效率 65%,对照组 45%。按统计教材公式,每组需 82 人才能有 80% 把握(统计功效)检测出差异。但科室只能入组 60 人。她用本工具的「功效分析」反算:给定 60 人、α=0.05,实际检验功效只有 64%。这意味着有 36% 的概率明明有效却得不出阳性结论。她拿着这个数字向伦理委员会申请扩大入组,最终获批每组 80 人。

对比矩阵

维度本工具竞品 A(Wolfram Alpha)传统方法
计算类型古典 / 条件 / 贝叶斯概率全类型概率统计(含分布拟合)手算公式或查概率表
输入方式直接输入事件数、条件数自然语言输入(如“P(A|B) if P(A)=0.3”)手动代入公式,需自行推导
速度即时(纯前端计算)需网络请求,结果 1-3 秒数分钟至数小时(复杂贝叶斯)
离线可用完全离线(浏览器内执行)必须联网离线(纸笔或本地软件)
隐私数据不出本地浏览器输入上传至云端服务器完全本地(纸笔)
学习成本低:填写数字即可中:需理解自然语言语法高:需掌握概率公式与计算技巧
结果展示纯数值结果数值 + 分布图 + 推导步骤仅数值(手算)或需额外绘图
第二节

使用指南

Getting Started

使用步骤

  1. 1在「事件 A」输入框填写第一个事件(如“掷骰子点数为 3”),右侧实时显示该事件的概率值
  2. 2若计算条件概率,在「事件 B」输入框填写条件事件(如“掷骰子点数为奇数”),结果区自动更新 P(A|B)
  3. 3切换到「贝叶斯」标签页,依次填入先验概率 P(A)、似然 P(B|A) 和全概率 P(B),结果区输出后验概率 P(A|B)
  4. 4点击结果区任意概率数字,自动复制到剪贴板,可直接粘贴到文档或聊天工具中

输入输出示例

输入输出说明
P(A)=0.3, P(B)=0.4, P(A∩B)=0.12 → 求 P(A|B)P(A|B) = 0.3常规:条件概率基本公式验证,P(A∩B)=P(A)P(B) 时独立事件,结果与先验一致
P(A)=0.5, P(B|A)=0.8, P(B|¬A)=0.2 → 求 P(A|B)(贝叶斯)P(A|B) = 0.8常规:贝叶斯定理典型应用,先验 0.5,似然比 4:1,后验提升至 0.8
P(A)=0, P(B)=0.5, P(A∩B)=0 → 求 P(A|B)P(A|B) = 0边界:零概率事件的条件概率,结果应为 0,分母不为零时无除零风险
P(A)=0.5, P(B)=0 → 求 P(A|B)未定义(分母为零)边界:条件概率分母为零,工具应明确提示无法计算,而非返回 0 或无穷
P(A)=0.6, P(B)=0.5, P(A∩B)=0.35 → 求 P(A|B)P(A|B) = 0.7常规:非独立事件,P(A∩B) ≠ P(A)P(B),结果 0.7 验证条件概率公式正确性
P(A)=0.5, P(B|A)=1, P(B|¬A)=0 → 求 P(A|B)(贝叶斯)P(A|B) = 1边界:完全确定性证据,后验概率为 1,验证贝叶斯公式在极端似然下的行为
P(A)=0.3, P(B)=0.4, P(A∩B)=0.15 → 求 P(A|B) 与 P(B|A)P(A|B) = 0.375, P(B|A) = 0.5易错:对称性误解,用户常以为 P(A|B)=P(B|A),实际不等,本例直观展示差异
P(A)=0.8, P(B|A)=0.9, P(B|¬A)=0.7 → 求 P(A|B)(贝叶斯)P(A|B) ≈ 0.837易错:高先验但似然比接近 1 时后验变化不大,用户可能误判贝叶斯更新幅度

常见错误对照

1.条件概率 P(A|B) 与 P(B|A) 混淆

✗ 错误已知 P(患病)=0.01、P(阳性|患病)=0.99,求 P(患病|阳性) 时直接写 0.99
✓ 修复用贝叶斯公式:P(患病|阳性) = 0.99×0.01 / (0.99×0.01 + 0.05×0.99) ≈ 0.167

条件概率不可逆。P(A|B) 与 P(B|A) 数值通常不同,必须通过贝叶斯定理转换,不能直接互换。

2.古典概型中事件不是等可能时仍用古典公式

✗ 错误骰子不均匀,仍用 1/6 计算掷出 6 的概率
✓ 修复先确认所有基本事件等可能。若骰子偏重,需用频率或贝叶斯更新概率

古典概型公式 P = 有利结果数/总结果数 的前提是每个基本事件等可能。不等可能时结果失真。

3.互斥事件与独立事件混用乘法规则

✗ 错误P(下雨且带伞) = P(下雨)×P(带伞) 但两事件不独立
✓ 修复P(下雨且带伞) = P(下雨)×P(带伞|下雨) 或直接统计联合频率

独立事件才可简单相乘。互斥事件用加法,条件事件用乘法公式 P(A∩B)=P(A)P(B|A)。

4.贝叶斯公式中先验概率更新后仍用旧值

✗ 错误第一次检测阳性后,第二次检测仍用初始患病率 0.01 计算
✓ 修复第一次后验概率作为第二次的先验概率:P(患病|第一次阳性) ≈ 0.167 作为新先验

贝叶斯更新是迭代过程。每次新证据后,后验概率成为下一次计算的先验,不能重复用原始先验。

5.概率值超过 1 或小于 0 仍提交

✗ 错误输入 P(A)=1.5 或 P(B)=-0.2
✓ 修复P(A)=0.5,P(B)=0.3

概率公理要求 0 ≤ P ≤ 1。超出范围的值无意义,工具会报错或返回 NaN。

6.条件概率计算中分母为 0 忽略处理

✗ 错误P(A|B) 中 P(B)=0 时仍用公式 P(A∩B)/P(B)
✓ 修复当 P(B)=0 时,P(A|B) 无定义,应返回 NaN 或提示 B 事件不可能发生

除以零在数学上无定义。条件概率仅在 P(B)>0 时有意义,工具需做零值检查。

第三节

工作原理

How It Works

核心公式

P(A|B) = P(B|A) × P(A) / P(B)

变量说明

  • P(A|B)事件 B 发生下 A 的条件概率
  • P(B|A)事件 A 发生下 B 的条件概率
  • P(A)事件 A 的先验概率
  • P(B)事件 B 的边缘概率

示例

某疾病在人群中的患病率 P(A)=0.01,检测准确率 P(B|A)=0.95,假阳性率 P(B|¬A)=0.05。某人检测阳性,求实际患病概率。先算 P(B)=P(B|A)P(A)+P(B|¬A)P(¬A)=0.95×0.01+0.05×0.99=0.0095+0.0495=0.059。代入贝叶斯公式:P(A|B)=0.95×0.01÷0.059≈0.161,即约 16.1%。

输入事件总数与目标事件数判断概率类型古典/条件/贝叶斯浏览器内计算纯前端无后端输出概率值条件概率P(A|B)=P(AB)/P(B)贝叶斯定理P(A|B)=P(B|A)P(A)/P(B)输出后验概率古典概率 P=n(E)/n(S)
用户输入 / 输出 类型判断与公式 本地计算处理
第四节

开发者集成

For Developers

5 种主流语言实现,复制即用:

import math def comb(n, k): """计算组合数 C(n,k)""" if k < 0 or k > n: return 0 return math.comb(n, k) def classical_prob(favorable, total): """古典概率:有利结果数 / 总结果数""" if total <= 0: raise ValueError("总结果数必须 > 0") return favorable / total # 示例:掷一次骰子,点数为 3 的概率 print(classical_prob(1, 6)) # 0.16666666666666666 # 示例:从 52 张牌中抽一张红心 A 的概率 print(classical_prob(1, 52)) # 0.019230769230769232
// 条件概率 P(A|B) = P(A∩B) / P(B) function conditionalProb(pIntersection, pB) { if (pB === 0) throw new Error('P(B) 不能为 0'); return pIntersection / pB; } // 示例:已知某疾病患病率 1%,检测准确率 99%,求检测阳性时真患病的概率 const pDisease = 0.01; const pPositiveGivenDisease = 0.99; const pPositive = 0.01 * 0.99 + 0.99 * 0.01; // 全概率 const pDiseaseGivenPositive = conditionalProb( pDisease * pPositiveGivenDisease, pPositive ); console.log(pDiseaseGivenPositive); // 0.5
package main import ( "fmt" "math/big" ) // 贝叶斯定理:P(A|B) = P(B|A) * P(A) / P(B) func bayes(pBGivenA, pA, pB *big.Rat) *big.Rat { // P(A∩B) = P(B|A) * P(A) pIntersect := new(big.Rat).Mul(pBGivenA, pA) // P(A|B) = P(A∩B) / P(B) result := new(big.Rat).Quo(pIntersect, pB) return result } func main() { // 示例:P(雨|云) = P(云|雨) * P(雨) / P(云) // 假设:P(云|雨)=0.8, P(雨)=0.3, P(云)=0.4 pCloudGivenRain := big.NewRat(4, 5) // 0.8 pRain := big.NewRat(3, 10) // 0.3 pCloud := big.NewRat(2, 5) // 0.4 result := bayes(pCloudGivenRain, pRain, pCloud) fmt.Println(result.FloatString(4)) // 0.6000 }
// 组合数计算(用于古典概率中的排列组合场景) function factorial(n: number): number { if (n < 0) throw new Error('负数无阶乘'); if (n <= 1) return 1; return n * factorial(n - 1); } function combination(n: number, k: number): number { if (k < 0 || k > n) return 0; return factorial(n) / (factorial(k) * factorial(n - k)); } // 示例:从 10 人中选 3 人组队的可能数 console.log(combination(10, 3)); // 120 // 示例:抛 5 次硬币恰好 2 次正面的概率(二项分布) const p = 0.5; const n = 5; const k = 2; const prob = combination(n, k) * Math.pow(p, k) * Math.pow(1 - p, n - k); console.log(prob); // 0.3125
/// 计算条件概率 P(A|B) fn conditional_prob(p_intersection: f64, p_b: f64) -> Result<f64, &'static str> { if p_b == 0.0 { return Err("P(B) 不能为 0"); } Ok(p_intersection / p_b) } fn main() { // 示例:从一副牌中抽到红心且是 A 的概率 // P(红心∩A) = 1/52 ≈ 0.01923 // P(红心) = 13/52 = 0.25 // P(A|红心) = (1/52) / (13/52) = 1/13 ≈ 0.07692 match conditional_prob(1.0/52.0, 13.0/52.0) { Ok(prob) => println!("{:.4}", prob), // 0.0769 Err(e) => eprintln!("错误: {}", e), } }
第五节

常见问题

Q & A
问算条件概率时,A和B事件怎么填?我老是搞混顺序。+
答

条件概率 P(A|B) 表示在事件 B 已经发生的条件下,事件 A 发生的概率。在工具里,通常第一个输入框是目标事件 A,第二个是条件事件 B。例如,你想算“已知今天是阴天,下雨的概率”,那么“下雨”是 A,“阴天”是 B。如果填反,结果会完全不同。建议先明确“在什么条件下”和“算什么事件”,再对应填入。

问古典概率、条件概率、贝叶斯,这三个模式到底有什么区别?我该用哪个?+
答

简单说:古典概率算“所有可能结果中,某事件占多少”,比如掷骰子出 3 的概率是 1/6。条件概率算“已知一件事发生,另一件事的概率”,比如已知阴天,下雨概率变大。贝叶斯则是“已知结果,反推原因的概率”,比如看到地上湿了,反推是下雨还是洒水车。如果只是掷骰子、抽扑克,用古典;如果事件之间有依赖关系,用条件;如果已知结果要反推原因,用贝叶斯。

问我输入了几个事件,结果算出来是 0 或 1,是不是算错了?+
答

不一定。概率为 0 意味着事件不可能发生(例如骰子掷出 7),概率为 1 意味着必然发生(例如从全是红球的袋子里抽到红球)。如果输入的事件确实不满足条件(比如同时满足两个互斥事件),结果 0 是正常的。请检查事件定义是否正确,例如“A 和 B 同时发生”但 A 和 B 互斥,结果就是 0。如果感觉不符合常识,重新审视事件描述。

问我想算一个复杂一点的概率,比如三个事件同时发生的概率,这个工具能算吗?+
答

本工具支持多个事件的组合计算,包括同时发生(交集)、至少一个发生(并集)等。对于古典概率,可以直接输入事件个数和总可能数。对于条件概率,可以逐步计算多步条件。对于贝叶斯,支持多原因多结果。如果涉及三个事件同时发生,建议先确认事件是否独立,再选择对应模式。如果事件不独立,需要先知道条件概率值,才能准确计算。

问这个概率计算工具算出来的结果,能用在考试或者作业里吗?+
答

可以作为验算参考,但不建议直接抄结果。考试和作业通常要求写出计算过程,且题目可能隐含假设(如等可能、独立),工具默认按标准数学公式计算,不会自动判断这些假设是否成立。例如,古典概率要求“每个结果等可能”,如果题目中骰子不均匀,工具直接算会出错。建议先用工具验证思路,再手动写出完整步骤。

问为什么我输入小数概率(比如0.3)算条件概率,结果好像不对?+
答

条件概率公式 P(A|B) = P(A∩B) / P(B),其中 P(A∩B) 是 A 和 B 同时发生的概率。如果你只输入了 P(A)=0.3 和 P(B)=0.4,但没有输入 P(A∩B),工具无法算出条件概率。请确保输入了联合概率 P(A∩B)。如果只有两个单独概率,工具可能默认假设独立(P(A∩B)=P(A)*P(B)),但实际可能不独立,导致结果偏差。

问算贝叶斯公式时,先验概率和似然概率到底填什么?+
答

先验概率是“在获得新证据之前,你对原因发生可能性的初始判断”,比如“下雨的先验概率是 30%”。似然概率是“如果原因成立,观察到证据的概率”,比如“如果下雨,地上湿的概率是 90%”。工具会要求你输入这些值,然后自动算出后验概率(有了证据后,原因的概率)。建议先确定“原因”和“证据”各是什么,再填入对应数字。

问这个工具需要联网吗?我断网了还能用吗?+
答

本工具完全在浏览器本地运行,不需要联网。所有计算都在你电脑上完成,数据不会上传到服务器,因此断网也能正常使用。这也意味着你的输入数据不会被第三方获取,隐私性较好。如果页面加载后工具界面显示正常,即使关闭网络,输入数字和点击计算也能得到结果。

隐私保证所有计算与处理均在你的浏览器本地完成,输入数据不会上传服务器,也不会保存或共享。

↑↓选择 ↵打开 ⌘+↵新窗口 esc关闭