错位排列

看一道题目:

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!

width="728" scrolling="no" height="90" frameborder="0" align="middle" marginwidth="0" marginheight="0" src="http://download1.csdn.net/down3/20070601/01184120111.htm">