错位排列

看一道题目:
n个士兵晚上巡逻,每人配备一把枪,如果n个人完全随机取一把枪,至少有一个人取
到自己的枪的概率是多少?

可以先求每个人拿到不是自己的枪的概率 P, 则1-P为题目所求

记每个人都拿不是自己的枪的情况的数目为 f (n),  则有以下递推式
易知f(1)=0; f(2)=1
n>=3时,  有f(n)=(f(n-1)+f(n-2))*(n-1)
具体怎么来的呢,  考虑其中的一人a1, 它对应的枪是b1 .  则它可以拿b2 …bn这 n-1把枪中的其中一把
不妨设a1拿的是b2,  则b2的主人a2拿的枪分为两种情况,
1. a2 拿a1的枪b1, 意味着a1跟a2交换两人的枪,
     问题等价于n-2个人, n-2支枪, 每个人对应一把不能拿的枪, 方法数为f(n-2)
2. a2不拿b1, 意味着a2不能拿b1,
     问题就等价于n-1个人, n-1把枪, 每个人对应一把不能拿的枪.. 方法数为 f(n-1)

所以 f(n) = (f(n-1)+f(n-2))*(n-1);

所以题目的答案是1 -  f(n)/n!

你可能感兴趣的:(错位排列)