Learning
VOL. VI · NO. 03 · Mathematics · 01 JAN 1970

排列组合:可能性的计算

数学 · 01 JAN 1970 · 8 min read · 1,904 words
· · ·

产品经理的数学课 · 第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%——超过四分之一的概率你会被假阳性误导。这就是为什么多重比较校正如此重要。


本课要点

  1. 排列 = 选了还排序,组合 = 选了不排序——顺序是否重要是第一个判断
  2. 阶乘增长极快——可能性空间比直觉大得多(或小得多)
  3. 二项分布描述了「n 次独立实验中成功 k 次」的概率
  4. 多重比较需要校正——同时测多个指标会膨胀假阳性率
  5. 组合爆炸是复杂度的根源——选项越多,系统越不可控

延伸阅读

  • 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)算即可。你需要的是理解增长是非线性的。