---
tags:
- 组合数学
- 概率论
返回目录: '[[数学系/离散数学/容斥原理与口味序列计数/学习指南|容斥原理与口味序列计数]]'
---

# 随机事件与概率

## 一、“顺序”在排列组合里的真实含义

排列组合里的“考虑顺序”，不是指时间上的先后，而是指：

> 交换两个元素的位置后，结果算不算同一种情况？

- 交换后算不同结果 → 有顺序；
- 交换后算同一结果 → 无顺序。

所以“顺序”本质上是一种**区分方式**：

| 说法 | 真实含义 |
|---|---|
| 考虑顺序 | 交换两个元素后，算不同结果 |
| 不考虑顺序 | 交换两个元素后，算同一结果 |
| 有顺序 | 元素有区别，位置有区别，对应关系不同则结果不同 |
| 无顺序 | 只关心选了哪些，不关心怎么对应 |

---

## 二、用放球例子看

有 $n$ 个不同的球，$N$ 个不同的盒子，每个盒子最多一个球。

取：

$$
N=3,\quad n=2
$$

盒子：$B_1,B_2,B_3$  
球：$a,b$

### 1. 如果考虑顺序

两种放法：

- 放法一：$a$ 放 $B_1$，$b$ 放 $B_2$
- 放法二：$b$ 放 $B_1$，$a$ 放 $B_2$

这两种不算同一个结果。

因为：

- 放法一中，$B_1$ 里是 $a$；
- 放法二中，$B_1$ 里是 $b$。

盒子不同，球也不同，球和盒子的对应关系不同，结果就不同。

所以它们是两种不同的放法。

这就是所谓“考虑顺序”：

> 球和盒子的对应关系不同，结果就不同。

---

### 2. 如果不考虑顺序

现在只问：

> 哪两个盒子被占了？

那么只有：

$$
\{B_1,B_2\},\quad \{B_1,B_3\},\quad \{B_2,B_3\}
$$

一共 3 种。

至于 $B_1$ 里是 $a$ 还是 $b$，不管。

这就是组合数：

$$
\binom{3}{2}=3
$$

这里“不考虑顺序”的意思是：

> 只要被选中的盒子集合一样，就认为是同一个结果。

---

## 三、排列数和组合数的关系

从 $N$ 个不同元素中选 $n$ 个：

### 1. 考虑顺序：排列数

$$
P(N,n)=\frac{N!}{(N-n)!}
$$

它数的是：

- 盒子不同；
- 球不同；
- 哪个球进哪个盒子，结果不同；
- 交换两个球的位置，结果不重合。

所以它数的是“不重合的结果数”，也就是排列数。

---

### 2. 不考虑顺序：组合数

$$
\binom{N}{n}
$$

它认为：

- 只要被选的盒子集合一样，就是同一个结果；
- 球怎么放，不管。

---

## 四、为什么要除以 $n!$

从排列角度看，每一个组合都被按不同顺序重复计算了 $n!$ 次。

例如从 $a,b,c$ 中选 3 个：

组合只有：

$$
\{a,b,c\}
$$

但在排列里，它对应：

$$
abc,\ acb,\ bac,\ bca,\ cab,\ cba
$$

一共：

$$
3!=6
$$

种。

所以：

$$
P(3,3)= \binom{3}{3}\times 3!
$$

一般地：

$$
P(N,n)= \binom{N}{n}\times n!
$$

因此：

$$
\binom{N}{n}=\frac{P(N,n)}{n!}
$$

代入排列数公式：

$$
\binom{N}{n}
=
\frac{N!}{(N-n)!\,n!}
$$

---

## 五、总结

| 概念 | 含义 | 公式 |
|---|---|---|
| 排列数 | 交换元素后算不同结果 | $\displaystyle P(N,n)=\frac{N!}{(N-n)!}$ |
| 组合数 | 交换元素后算同一结果 | $\displaystyle \binom{N}{n}=\frac{N!}{(N-n)!\,n!}$ |
| 两者关系 | 每个组合在排列中被重复算了 $n!$ 次 | $\displaystyle P(N,n)=\binom{N}{n}\times n!$ |

核心一句话：

> “顺序”不是时间先后，而是交换后结果是否重合。  
> 重合 → 组合；不重合 → 排列。  
> 组合数除以 $n!$，就是为了去掉同一组元素内部不同排列造成的重复。



**1、首先是优限法，**也就是对有特殊限制的元素优先排列**。**

例：5 人排一排，最左端只能排甲，那就把甲先安排在最左端完成第一步，第二步把剩下的 4 个人全排列，最后的结果是：

![](https://pic1.zhimg.com/v2-0d81dfd724b7e057a60647e4ad99f2a6_1440w.jpg)

同理，如果甲只能排第二，结果也是 24；

继续，如果甲只能排第三或者只能第四、第五，结果相同。

也就是说，只要甲的位置固定，就不用去管他，把剩下的元素全排列就好。

如果把这五种特殊要求加在一起，其实就是 5 个人的[全排列](https://zhida.zhihu.com/search?content_id=261804103&content_type=Article&match_order=3&q=%E5%85%A8%E6%8E%92%E5%88%97&zhida_source=entity)，也就是：

![](https://pic4.zhimg.com/v2-f2d442f11dfa1c6a54835043638a0e69_1440w.jpg)

我们把上式推广一下，从 n 元素中取出 m 元素进行排列就可以写成这样：

![](https://picx.zhimg.com/v2-dd8b75c615f64791a0c87868b21b54db_1440w.jpg)

**2、[捆绑法](https://zhida.zhihu.com/search?content_id=261804103&content_type=Article&match_order=1&q=%E6%8D%86%E7%BB%91%E6%B3%95&zhida_source=entity)：**必须相邻的元素，要捆绑排列

还是上例，5 人排一排，但现在要求甲乙必须在一起，那我们就可以把甲乙看成一个元素，整体上 5 元素的全排列现在变成 4 元素的全排列：

![](https://pica.zhimg.com/v2-9832313b8d0071096ee8d3b7ddeada6a_1440w.jpg)

这只是第一步，第二步是甲乙内部还有 2 种排列，所以总方法有：

![](https://pic4.zhimg.com/v2-eec910d705404e231337421880d05f1f_1440w.jpg)

**3、[插空法](https://zhida.zhihu.com/search?content_id=261804103&content_type=Article&match_order=1&q=%E6%8F%92%E7%A9%BA%E6%B3%95&zhida_source=entity)：**必须不相邻的元素，要插空排列。

例：2 男 3 女排一排，女生不能相邻，求排列方法

第一步 2 男全排列：P(2,2)=2，我这这里吧排列写成这样，纯粹是因为不想利用公式打成角标的形式而已，没啥别的原因，它就是 2 的全排列。

第二步把 3 女排在两男的 3 空隙中（含两端），P(3,3)=6

合计：P(2,2)×P(3,3)=12.

**4、[挡板法](https://zhida.zhihu.com/search?content_id=261804103&content_type=Article&match_order=1&q=%E6%8C%A1%E6%9D%BF%E6%B3%95&zhida_source=entity) **：对于相同元素的分配问题，可以采用挡板法。

例：6 个相同的苹果分 3 份，每份至少一个，有几种分法？

可以把 6 苹果依次摆在桌上，6 苹果中间有 5 个空，只需拿 2 个挡板放入 5 空中，即可把 6 苹果分 3 份。

5 空选 2 空放挡板，这两个挡板并不分先后，所有只需 5 空中选 2 空即可：C(5,2)

5、** [定序元素](https://zhida.zhihu.com/search?content_id=261804103&content_type=Article&match_order=1&q=%E5%AE%9A%E5%BA%8F%E5%85%83%E7%B4%A0&zhida_source=entity)，只选不排。**

排列的元素中，如果有的元素顺序或位置必须固定，那就先把顺序固定的元素先选出来安排好，然后把剩下元素再进行排列：

例：5 人中任选 3 人做老大老二老三，三人排列顺序不能变，其余 2 人随意，排列方法有几种？我们可以设想有五个凳子，先把哥仨的凳子选出来，有 C(5，3)=10 种选法，让三人按照自己的顺序坐下来。

第二步，让其余二人全排列坐在空位上即可：A（2，2）=2

根据乘法原则，合计排列总数：

![](https://pic3.zhimg.com/v2-0297a9cc080378cfca6084a14ba60e36_1440w.jpg)

为什么有定序的就可以直接只选不排呢？

因为 5 中任选 3，选出来之后，我们只需把哥仨按照固定好顺序排好就行，他们的排列只有一种。

这种定序问题我们也可以采用另一种思路：比如 5 人首先全排列，有 A(5，5）=120 种方式，再把哥仨重复排列的次数去掉就可以，三人全排列是 A（3，3）=6，所以去除掉重复的排列数之后就是 120/6=20 种。

6、**相同元素，只选不排**

和定序元素类似，如果待选元素中有相同的元素，它们内部怎么排列都是一种结果，所以，只需要计算怎么把它们选出来的方法数目就可以。

比如：1、1、1、2、3 五元素全排列，它们的排列方法有几种？

同样考虑 5 个凳子，把 3 个相同的元素摁在凳子上，怎么摁都是一种排列方式，所以只需要计算五个凳子中选 3 凳子的方法就行，也就是

C（5，3）=10 种方案，其余两个全排列 2 种方案，所以合计排列数就是 10×2=20 种排列。

也可以采用首先全排列，然后去重的办法：

5 元素全排列为 A(5，5)=120 种方式，三个 1 之间的排列是 A(3，3）=6 种，去掉重复之后就是 120/6=20 种方案。

上述方法都是简单的较为常见排列方法，可以直接拿来用。不过，实际生活场景中，很多问题都是较为复杂，需要区别不同的场景相宜处理。

### 隔板法

隔板法使用条件：1.元素要相同（比如名额，一模一样的小球等等）

2.分给不一样的盒子（也可以是不同的班级等）

3.每一个盒子至少要分配一个

以上条件全部满足后，将 n 个[元素分配](https://zhida.zhihu.com/search?content_id=260480433&content_type=Article&match_order=1&q=%E5%85%83%E7%B4%A0%E5%88%86%E9%85%8D&zd_token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJ6aGlkYV9zZXJ2ZXIiLCJleHAiOjE3OTA2ODAwMDIsInEiOiLlhYPntKDliIbphY0iLCJ6aGlkYV9zb3VyY2UiOiJlbnRpdHkiLCJjb250ZW50X2lkIjoyNjA0ODA0MzMsImNvbnRlbnRfdHlwZSI6IkFydGljbGUiLCJtYXRjaF9vcmRlciI6MSwiemRfdG9rZW4iOm51bGx9.vEiV1JLHptnsknZp1wGxQZ6ylTJT5xNNXmW1jzCdUow&zhida_source=entity)给 m 个不同的盒子，每个盒子至少分配一个，因为 n 个元素之间共有 n-1 个空，在这 n 个元素之间只需要插入 m-1 个板子就可以将这 n 个元素分成 m 份，且每一份至少有一个，故一共有  种分配方法。

例题 1：某校将 6 个三好学生名额分配到高三年级的 3 个班，每班至少 1 个名额，则共有多少种不同的分配方案？

解析：这是一个典型的隔板法问题，隔板法的三个使用条件，全部满足，故共有  种分配方案。

  

例题 2：学校决定把 12 个参观[航天博物馆](https://zhida.zhihu.com/search?content_id=260480433&content_type=Article&match_order=1&q=%E8%88%AA%E5%A4%A9%E5%8D%9A%E7%89%A9%E9%A6%86&zd_token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJ6aGlkYV9zZXJ2ZXIiLCJleHAiOjE3OTA2ODAwMDIsInEiOiLoiKrlpKnljZrnianppoYiLCJ6aGlkYV9zb3VyY2UiOiJlbnRpdHkiLCJjb250ZW50X2lkIjoyNjA0ODA0MzMsImNvbnRlbnRfdHlwZSI6IkFydGljbGUiLCJtYXRjaF9vcmRlciI6MSwiemRfdG9rZW4iOm51bGx9.yyAt8O4mB9x3rn3zqc0ivWA9e_5gPWAgMbDcsjvLD3Y&zhida_source=entity)的名额给三（1）､三（2）､三（3）､三（4）四个班级.要求每个班分别的名额不比班级序号少，即三（1）班至少 1 个名额，三（2）班至少 2 个额，……，则分配方案有多少种？

解析：此题以满足隔板法的前两个条件，第三个条件并满足，但如果能将各班需要的多余的名额提前分发出去，保证各班需要的名额都是至少一个，这个问题便再次回归为隔板问题了。

因此，可以先给 2 班 1 个名额，3 班 2 个名额，4 班 3 个名额，此时还剩下 6 个名额，各班均变成至少还需要一个名额，故共有种分配方法。

  

例题 3：将 5 个[数学竞赛](https://zhida.zhihu.com/search?content_id=260480433&content_type=Article&match_order=1&q=%E6%95%B0%E5%AD%A6%E7%AB%9E%E8%B5%9B&zd_token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJ6aGlkYV9zZXJ2ZXIiLCJleHAiOjE3OTA2ODAwMDIsInEiOiLmlbDlrabnq57otZsiLCJ6aGlkYV9zb3VyY2UiOiJlbnRpdHkiLCJjb250ZW50X2lkIjoyNjA0ODA0MzMsImNvbnRlbnRfdHlwZSI6IkFydGljbGUiLCJtYXRjaF9vcmRlciI6MSwiemRfdG9rZW4iOm51bGx9.U_1XQQG9dmvMHaInCvAJ3x5LVY9-sslUVP4ws5lOOPU&zhida_source=entity)名额分配给 3 个不同的班级，其中甲、乙两个班至少各有 1 个名额，则不同的分配方案种数为？

解析：此题仍旧是至少分配一个的条件不满足，但是甲乙两个班级已经满足条件，只有丙是至少 0 个，但如果能够人为的添加一个名额给丙，那么此时丙也变成至少一个名额了，故添加一个名额后变成了 6 个名额，分配给 3 个班，每班至少一个，共有  种。

### 一、隔板法核心原理：把分配问题变成 “插空” 游戏

#### 1.1 隔板法的本质

隔板法的核心思想是：**将 “相同元素的分配” 转化为 “在元素间隙中插入隔板” 的组合问题**。

举个直观的例子：有 6 个相同的小球，要分成 4 组（对应 4 个不同的盒子），每个组至少有 1 个小球。怎么分？

- 第一步：把 6 个小球排成一排，中间会产生 5 个空隙（比如：○ □ ○ □ ○ □ ○ □ ○ □ ○，其中□代表空隙）。
- 第二步：在这 5 个空隙中选 3 个插入隔板，就能把小球分成 4 组（比如：○○|○|○○|○，对应 2、1、2、1 个小球）。
- 第三步：总的分法数，就是从 5 个空隙中选 3 个的组合数，即 C 53​=10 种。

这个例子为大家诠释了隔板法的本质：**相同元素的分配问题，等价于在元素间隙中选隔板的组合问题**。

#### 1.2 两个基础模型：覆盖所有分配场景

隔板法主要有两个核心模型，分别对应 “每个盒子至少 1 个元素” 和 “盒子可以为空” 两种情况，掌握这两个模型，就能解决 90% 以上的分配问题。

##### 模型一：每个盒子至少 1 个元素（正整数解）

**问题描述**：有 n 个相同的元素，要分配到 k 个不同的盒子中，每个盒子至少放 1 个元素，求有多少种分配方案？

**推导过程**：

- n 个相同元素排成一排，中间有 n−1 个空隙（因为两个元素之间一个空隙，n 个元素就是 n-1 个）。
- 要分成 k 组，需要插入 k−1 个隔板（比如 3 个盒子需要 2 个隔板）。
- 由于每个盒子至少 1 个元素，隔板不能插在同一个空隙（否则会有盒子为空），也不能插在两端（没有意义）。
- 因此，方案数就是从 n−1 个空隙中选 k−1 个的组合数，即：

![](https://developer.qcloudimg.com/http-save/yehe-100000/172b11bd1b9342b9649061d01965982b.png)

​

**适用场景**：

- 相同元素分配，每个接收方至少 1 个（如分苹果、分糖果）。
- 不定方程

![](https://developer.qcloudimg.com/http-save/yehe-100000/17a165c302a9de1d3348c52edac9def1.png)

的正整数解组数（xi​≥1）。

**示例验证**：

- 问题：将 6 个相同小球分给 4 个盒子，每个盒子至少 1 个，方案数是多少？
- 解答：n=6，k=4，方案数

![](https://developer.qcloudimg.com/http-save/yehe-100000/0786fa79b8fc97cae4f324ffd05708ba.png)

，和之前的例子一致。

##### 模型二：盒子可以为空（非负整数解）

**问题描述**：有 n 个相同的元素，要分配到 k 个不同的盒子中，盒子可以为空（允许不放元素），求有多少种分配方案？

**推导过程**：

- 直接用模型一无法解决，因为模型一要求每个盒子至少 1 个元素。这里的关键技巧是 **“借球法”**—— 先给每个盒子 “借” 1 个元素，让每个盒子至少有 1 个元素，再用模型一求解。
- 具体步骤：
    1. **借球：** 给 k 个盒子各借 1 个元素，总共借了 k 个元素，此时元素总数变为 n+k 个。
    2. **分配：** 现在问题转化为 “将 n+k 个相同元素分给 k 个盒子，每个盒子至少 1 个元素”，符合模型一的条件。
    3. **还原：** 分配完成后，再从每个盒子中拿走 1 个 “借” 来的元素，就回到了 “n 个元素分给 k 个盒子，允许为空” 的原始问题。
- 根据模型一，方案数为

![](https://developer.qcloudimg.com/http-save/yehe-100000/d9a50f6522d8a4c60b79383c88db92a6.png)

。

**适用场景**：

- 相同元素分配，允许部分接收方为空（如分配任务，部分人可以不分配）。
- 不定方程

![](https://developer.qcloudimg.com/http-save/yehe-100000/835b335822bfc4302046d96bc3165e03.png)

的非负整数解组数（xi​≥0）。

**示例验证**：

- 问题：将 6 个相同小球分给 4 个盒子，盒子可以为空，方案数是多少？
- 解答：n=6，k=4，方案数为：

![](https://developer.qcloudimg.com/http-save/yehe-100000/e0064b2d8433dfdeb73ea45c4872d299.png)

。

#### 1.3 模型对比与记忆技巧

为了方便大家快速区分和记忆两个模型，这里整理了核心对比表：

|模型|条件限制|方案数公式|对应方程解|
|---|---|---|---|
|模型一|每个盒子至少 1 个元素||正整数解（xi​≥1）|
|模型二|盒子可以为空||非负整数解（xi​≥0）|

![](https://developer.qcloudimg.com/http-save/yehe-11802138/be2032eaf01e1002fe7a4dbcda463a3d.png)

**记忆口诀**：

- 至少一个：减一选减一（n-1 选 k-1）。
- 可以为空：加一选减一（n+k-1 选 k-1）。

#### 1.4 关键注意事项

1. **元素必须相同**：隔板法的前提是元素相同，若元素不同（如分配不同的礼物），则不能用隔板法，需用排列数或乘法原理。
2. **盒子必须不同**：盒子不同意味着 “分给 A 盒子 2 个、B 盒子 1 个” 和 “分给 A 盒子 1 个、B 盒子 2 个” 是不同方案。若盒子相同（如分成几组，不区分顺序），则需要额外去重。
3. **边界条件处理**：
    - 当 n < k 且模型一（每个盒子至少 1 个）：方案数为 0（比如 3 个小球分给 5 个盒子，每个至少 1 个，不可能）。
    - 当 n=0（没有元素可分）且模型二（允许为空）：方案数为 1（只有 “所有盒子都为空” 一种情况）。


容斥原理
容斥原理是一种较常用的计数方法，其基本思想是: 先不考虑重叠的情况，把包含于某内容中的所有对象的数目先计算出来，然后再把计数时重复计算的数目排斥出去，使得计算的结果既无遗漏，又无重复。

容斥原理核心的计数规则可以记为一句话: 奇加偶减。

假设被计数的有 A、B、C 三类，那么，A、B、C 类元素个数总和=A 类元素个数+B 类元素个数+C 类元素个数-既是 A 又是 B 的元素个数-既是 B 又是 C 的元素个数-既是 A 又是 C 的元素个数+既是 A 又是 B 且是 C 的元素个数，即 A∪B∪C=A+B+C-A∩B-B∩C-A∩C+A∩B∩C，如图 1 所示。
