排列组合:可能性的计算
产品经理的数学课 · 第3讲
排列组合:可能性的计算
当你说「可能性很多」时,到底有多少?组合数学给你精确的数字——以及为什么「很多」往往比你以为的少得多。
前言
你正在设计一个密码系统。用户需要选 6 位数字密码。你觉得「6 位数字,可能性很多,应该很安全」。但 6 位数字到底有多少种组合?答案是 10⁶ = 1,000,000。听起来很多?一个暴力破解工具每秒试 100 万次,1 秒就能试完。
排列组合不只是数学游戏。它是理解「可能性空间」的基础工具。当你需要回答「有多少种方式」「概率是多少」「需要测试多少次」时,你需要的不是直觉,而是组合数学。
核心概念
排列:顺序重要
从 n 个不同元素中取出 r 个,按顺序排列:
$$ P(n, r) = \frac{n!}{(n-r)!} $$
例子:你的 App 有 5 个功能位,3 个候选功能。按优先级排序有多少种排法?
P(5, 3) = 5!/(5-3)! = 5×4×3 = 60 种
例子:4 位数字密码有多少种?P(10, 4) = 10×9×8×7 = 5040 种。
组合:顺序不重要
从 n 个不同元素中取出 r 个,不考虑顺序:
$$ C(n, r) = \binom{n}{r} = \frac{n!}{r!(n-r)!} $$
例子:从 10 个需求中选 3 个本季度做,有多少种选法?
C(10, 3) = 10!/(3!×7!) = (10×9×8)/(3×2×1) = 120 种
排列 vs 组合的关键区别:
| 场景 | 用排列 | 用组合 |
|---|---|---|
| 选 3 人并分配角色(PM、设计、开发) | ✓ | |
| 选 3 人组队(不分角色) | ✓ | |
| 6 位数字密码(顺序影响密码) | ✓ | |
| 选 5 张卡牌(手牌不排序) | ✓ |
二项分布:成功/失败的重复实验
当你重复 n 次独立实验,每次成功概率为 p,恰好成功 k 次的概率:
$$ P(X=k) = \binom{n}{k} p^k (1-p)^{n-k} $$
例子:你有 10 个用户调研,每个用户有 60% 的概率给你有效反馈。恰好有 8 个给有效反馈的概率是:
P(X=8) = C(10,8) × 0.6⁸ × 0.4² ≈ 0.12
只有 12% 的概率。如果你期望 10 次调研中有 8 次有效,你需要接受大部分时候不会刚好 8 次。
阶乘增长:为什么可能性比你以为的少
n! 的增长速度极快:
- 5! = 120
- 10! = 3,628,800
- 20! ≈ 2.4 × 10¹⁸
PM 的警醒:当你设计一个有 10 个选项的功能时,用户面对的选择空间是 C(10,3) = 120 种组合(如果每次选 3 个)。选择过载不是心理学虚构——120 种组合对大脑来说确实是过载的。
产品经理的应用
应用场景一:测试覆盖率
你的产品有 5 个核心流程,每个流程有 3 个分支。完整测试需要覆盖多少种路径?
5 个流程 × 3 个分支 = 3⁵ = 243 种路径
如果每条路径测试需要 10 分钟,完整测试需要 2430 分钟 ≈ 40 小时。这就是为什么你不能做「完整测试」——你需要风险驱动的测试策略。
应用场景二:功能组合爆炸
你正在做一个权限系统,有 5 种角色和 8 种权限。每个角色可以有任意子集的权限。
可能的权限配置 = 2⁸ = 256 种(每种权限有「有/无」两种状态)
如果 5 个角色各自独立配置:256⁵ ≈ 1.1 × 10¹² 种。万亿级的配置空间——这就是为什么权限系统总是 bug 丛生。
应用场景三:A/B 测试的多重比较
你同时测 10 个指标。即使没有任何真实差异,纯随机波动下,有指标「显著」的概率是:
$$ 1 - (1-0.05)^{10} \approx 0.40 $$
40% 的概率至少有一个假阳性! 这就是为什么多重比较需要校正(Bonferroni 校正等)。不做校正的 A/B 测试就是自欺欺人。
常见误区
误区一:组合爆炸的低估
「就多加一个选项,应该不复杂吧」
每多一个选项,可能性空间翻倍(如果是二选一的选项)。从 5 个选项到 6 个选项,可能不是增加 20%,而是增加 100%。复杂度的增长是非线性的。
误区二:独立性假设的忽视
「这 3 个功能互不影响,所以概率相乘」
如果功能之间有相关性(比如用户用了 A 功能就更可能用 B),独立性假设就失效了。组合数学的计算需要先确认独立性。
误区三:「所有可能」的误解
「随机选一个 4 位数字密码,有万分之一的概率猜中」
不对。4 位数字有 10000 种可能,随机猜中概率是 1/10000。但如果你知道用户的生日(比如 0725),你只需要试 366 种可能。信息不对称会大幅缩减可能性空间。
PM/BA 应用
| 场景 | 组合工具 | 决策价值 |
|---|---|---|
| 测试策略 | 路径组合计算 | 评估测试工作量 |
| 功能设计 | 选项空间计算 | 识别选择过载风险 |
| 安全评估 | 密码空间计算 | 评估暴力破解难度 |
| 调研设计 | 样本量公式 | 确保统计效力 |
| 需求排列 | 排列组合 | 评估优先级方案数 |
课后测验
题目 1
你的 App 有 4 种登录方式(手机号、微信、Apple、邮箱),用户可以选择其中 1-2 种作为自己的常用登录方式。用户有多少种选择方案?
A. 4
B. 6
C. 10
D. 16
查看答案与解析
答案:C(10)
选 1 种:C(4,1) = 4 种
选 2 种:C(4,2) = 6 种
总计:4 + 6 = 10 种
注意:D(16)是 2⁴ = 每种登录方式「开/关」的组合数,包括了「都不选」(0 种)和「全选」(4 种,超出了 1-2 种的限制)。
题目 2
你做了 8 次用户测试,每次测试中用户有 70% 的概率完成任务。恰好有 6 次完成的概率最接近以下哪个?
A. 0.30
B. 0.20
C. 0.10
D. 0.05
查看答案与解析
答案:A(0.30)
P(X=6) = C(8,6) × 0.7⁶ × 0.3² = 28 × 0.1176 × 0.09 ≈ 0.296 ≈ 0.30
直觉:8 次中期望完成 8×0.7 = 5.6 次。6 次接近期望值,所以概率不算太低。
题目 3
你的团队同时跑了 6 个 A/B 测试,每个测试的显著性水平 α=0.05。即使所有测试都没有真实效果,至少有一个假阳性的概率是多少?
A. 5%
B. 26%
C. 30%
D. 50%
查看答案与解析
答案:B(26%)
P(至少一个假阳性) = 1 - P(全部不显著) = 1 - (1-0.05)⁶ = 1 - 0.95⁶ = 1 - 0.735 ≈ 0.265
26%——超过四分之一的概率你会被假阳性误导。这就是为什么多重比较校正如此重要。
本课要点
- 排列 = 选了还排序,组合 = 选了不排序——顺序是否重要是第一个判断
- 阶乘增长极快——可能性空间比直觉大得多(或小得多)
- 二项分布描述了「n 次独立实验中成功 k 次」的概率
- 多重比较需要校正——同时测多个指标会膨胀假阳性率
- 组合爆炸是复杂度的根源——选项越多,系统越不可控
延伸阅读
- Herbert Wilf, 《generatingfunctionology》 — 生成函数与组合数学的优雅联系
- Tao, 《The Art of Problem Solving》 — 数学竞赛视角的组合思维
- George Pólya, 《How to Solve It》 — 组合问题的启发式方法
下一步
下一课:复利与指数增长:时间的价值 — 理解为什么「慢慢变富」在数学上是必然的。
工具提示:记住 C(n,r) 的直觉就够了。n 个里选 r 个 = n×(n-1)×…÷r!。大部分场景用计算器(或 Excel)算即可。你需要的是理解增长是非线性的。