首先从这个问题开始:有 n n n 个人以及 n n n 顶帽子,每个人任意选取一顶帽子,求至少一个人拿对自己帽子的概率。
1. 推导
记事件 A i A_{i} Ai为“第 i i i个人拿对了自己的帽子”, i ∈ [ 1 , n ] i\in[1,n] i∈[1,n]
则所求概率为 P ( A 1 ∪ A 2 ∪ . . . . . . ∪ A n ) P(A1 \cup A2 \cup ...... \cup An) P(A1∪A2∪......∪An)
由 P ( A 1 ) = P ( A 2 ) = . . . = P ( A n ) = 1 n P(A_{1})=P(A_{2})=...=P(A_{n})=\frac{1}{n} P(A1)=P(A2)=...=P(An)=n1
P ( A 1 A 2 ) = P ( A 1 A 3 ) = . . . = P ( A n − 1 A n ) = 1 n ( n − 1 ) P(A_{1}A_{2})=P(A_{1}A_{3})=...=P(A_{n-1}A_{n})=\frac{1}{n(n-1)} P(A1A2)=P(A1A3)=...=P(An−1An)=n(n−1)1
P ( A 1 A 2 A 3 ) = P ( A 1 A 2 A 4 ) = . . . = P ( A n − 2 A n − 1 A n ) = 1 n ( n − 1 ) ( n − 2 ) P(A_{1}A_{2}A_{3})=P(A_{1}A_{2}A_{4})=...=P(A_{n-2}A_{n-1}A_{n})=\frac{1}{n(n-1)(n-2)} P(A1A2A3)=P(A1A2A4)=...=P(An−2An−1An)=n(n−1)(n−2)1
…
根据概率论的容斥原理
P ( ⋃ i = 1 n A i ) = 1 − 1 2 ! + 1 3 ! − 1 4 ! + . . . + ( − 1 ) n − 1 1 n ! P(\bigcup_{i=1}^{n}A_{i})=1-\frac{1}{2!}+\frac{1}{3!}-\frac{1}{4!}+...+(-1)^{n-1}\frac{1}{n!} P(⋃i=1nAi)=1−2!1+3!1−4!1+...+(−1)n−1n!1
(其实这些 1 2 ! \frac{1}{2!} 2!1什么的就是上面那些式子乘以一个二项式系数)
然后,用 1 − P ( ⋃ i = 1 n A i ) 1-P(\bigcup_{i=1}^{n}A_{i}) 1−P(⋃i=1nAi),就可以得出错排问题的概率,然后乘以全排列 n ! n! n!,就可以得到错位排列的个数。
2. 递推公式以及组合意义
令 D n D_{n} Dn为 n n n个物品的错位排列,则
D n = n ! ∗ ( 1 − ( 1 − 1 2 ! + 1 3 ! − 1 4 ! + . . . + ( − 1 ) n − 1 1 n ! ) ) D_{n}=n!*(1-(1-\frac{1}{2!}+\frac{1}{3!}-\frac{1}{4!}+...+(-1)^{n-1}\frac{1}{n!})) Dn=n!∗(1−(1−2!1+3!1−4!1+...+(−1)n−1n!1))
D n = n ! ∗ ( 1 − 1 + 1 2 ! − 1 3 ! + 1 4 ! + . . . + ( − 1 ) n 1 n ! ) D_{n}=n!*(1-1+\frac{1}{2!}-\frac{1}{3!}+\frac{1}{4!}+...+(-1)^{n}\frac{1}{n!}) Dn=n!∗(1−1+2!1−3!1+4!1+...+(−1)nn!1)
D n − 1 = ( n − 1 ) ! ∗ ( 1 − 1 1 ! + 1 2 ! + . . . + ( − 1 ) n − 1 1 ( n − 1 ) ! ) D_{n-1}=(n-1)!*(1-\frac{1}{1!}+\frac{1}{2!}+...+(-1)^{n-1}\frac{1}{(n-1)!}) Dn−1=(n−1)!∗(1−1!1+2!1+...+(−1)n−1(n−1)!1)
可以发现 D n D_{n} Dn与 D n − 1 D_{n-1} Dn−1只差了 1 n ! \frac{1}{n!} n!1这一项
D n = n ! ( D n − 1 ( n − 1 ) ! + ( − 1 ) n 1 n ! ) D_{n}=n!(\frac{D_{n-1}}{(n-1)!}+(-1)^n\frac{1}{n!}) Dn=n!((n−1)!Dn−1+(−1)nn!1)
D n = n D n − 1 + ( − 1 ) n D_{n}=nD_{n-1}+(-1)^n Dn=nDn−1+(−1)n (1)
此时,我们考虑把 ( − 1 ) n (-1)^n (−1)n消去
D n − 1 = n D n − 2 + ( − 1 ) n − 1 D_{n-1}=nD_{n-2}+(-1)^{n-1} Dn−1=nDn−2+(−1)n−1 (2)
令 (1) + (2)
D n + D n − 1 = n D n − 1 + ( n − 1 ) D n − 2 D_{n}+D_{n-1}=nD_{n-1}+(n-1)D_{n-2} Dn+Dn−1=nDn−1+(n−1)Dn−2
所以 D n = ( n − 1 ) ( D n − 1 + D n − 2 ) D_{n}=(n-1)(D_{n-1}+D_{n-2}) Dn=(n−1)(Dn−1+Dn−2)
考虑组合意义
因为考虑的是
D
n
D_{n}
Dn,若第
n
n
n个人戴上了第
n
−
1
n-1
n−1顶帽,此时我们有两种方式可以转移,首先就是第
n
−
1
n-1
n−1个人戴上了第n顶帽,这时第
n
n
n和第
n
−
1
n-1
n−1个人的帽子已经确定,我们只需要让剩下的
n
−
2
n-2
n−2个人错排带帽就行,此时贡献一个
D
n
−
2
D_{n-2}
Dn−2;然后就是,第
n
−
1
n-1
n−1个人不带第
n
n
n顶帽子,那就是让剩下
n
−
1
n-1
n−1个人错排嘛,贡献一个
D
n
−
1
D_{n-1}
Dn−1。(本来是第
n
−
1
n-1
n−1个人不戴第
n
−
1
n-1
n−1顶帽的,因为第
n
n
n个人带了第
n
−
1
n-1
n−1顶帽,就轮到第
n
−
1
n-1
n−1个人带第
n
n
n顶了,然后这时又不让第
n
n
n个人带了第
n
−
1
n-1
n−1顶帽,就是令
n
−
1
n-1
n−1个人错排了)第
n
n
n个人不单止第
n
−
1
n-1
n−1顶帽这个选择,有
n
−
1
n-1
n−1个人,总共有
n
−
1
n-1
n−1个选择,对
n
−
1
n-1
n−1个人都进行上述操作,刚好不重不漏,所以递推公式就是:
D
n
=
(
n
−
1
)
(
D
n
−
1
+
D
n
−
2
)
D_{n}=(n-1)(D_{n-1}+D_{n-2})
Dn=(n−1)(Dn−1+Dn−2)
参考文献:
https://zhuanlan.zhihu.com/p/477207612
https://www.bilibili.com/video/BV1nS4y167Xc/?spm_id_from=333.788