c语言 错排公式 程序,神奇的错排问题

本文探讨了一道经典的数学问题——错排问题,即如何计算在一定条件下排列元素时避免重复的概率。通过递推公式和泰勒级数展开,得出概率接近1/e,并证明了这一极限。错排问题源于伯努利-欧拉的装错信封问题,展示了数学的奇妙之处。
摘要由CSDN通过智能技术生成

原标题:神奇的错排问题

小谜题大世界

有一道经典的数学问题:

A和B每人持一门花色的牌(各13张),背面向上,并打乱。然后每人出一张牌比较大小,共出13轮,试求这13轮中点数均不一样的概率。

这个问题看起来很简单,实则不容易。为了解决这个问题,我们先看另外一个小问题——1,2,3,4四个数字,从左到右,第i个数不能放i(i=1,2,3,4),有几种放法?

解析

答案是9种:

45ffe9856985fb20f1fd3c933220b520.png

那么如果将4个数改成5个,6个……甚至n个,又应该怎么做呢?

如果还是像刚才这样一个个的列出来,你会发现当数字增大时,情况会变得异常复杂,这种做法不再具备可行性,因此我们需要更加简便的方式——比如寻找递推公式。

对于n个元素的错排数,我们用D(n)表示。

第一步,把第1个元素放在其他某个位置(比如第k个),一共有n-1种放法;

第二步,如果第k个元素放在第1个位置,那么有D(n-2)种放法;否则,有D(n-1)种放法。

综上,D(n) = (n-1) [D(n-2) + D(n-1)]。特殊地,D(1) = 0,D(2) = 1。

然后,利用这个递推公式,可以得到n个元素的错排公式(具体推导过程略):

4fa5c2e05e71f6d83bb8310f3dfa88f1.png

当n取2,3,4,5,6…的时候,D(n)的值分别为:1,2,9,44,265…

错排公式可以进一步简化成:D(n) = [n!/e+0.5],其中e是自然对数的底数,[ ]是向下取整符号。这个问题叫做错排问题。最早被尼古拉·伯努利和欧拉研究,因此历史上也称为伯努利-欧拉的装错信封的问题。

利用上述简化公式,本文开头的问题可以轻松解决了。所求概率为:

P=[n!/e+0.5]/n!=[13!/e+0.5]/13!=0.36787944116…

已经非常接近1/e(=0.36787944117…)。

接下来很自然的想到一个问题,P是否以其为极限呢?我们看到,从n=2起,随着n的增大,P似乎总是越来越接近1/e的:

从直觉上也是这样——随着n的增大,+0.5与取整符号的作用越来越不明显,整个式子便越来越接近(n!/e)/n!=1/e。

c9e4980981a3bbc4bb80bb5d7b4aaf9c.png

那要怎么证明呢?

其实,在泰勒公式

中,

令x=-1,直接可以得到:

bfb4c98c97a3bcd969999a770e0cbb32.png

证毕。

与这个问题一样,e又在一个看起来毫不相关的地方出现了。数学是如此的神奇!返回搜狐,查看更多

责任编辑:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值