设为首页 加入收藏

TOP

某公司面试概率题值排列组合基础回忆
2014-11-23 22:59:20 来源: 作者: 【 】 浏览:10
Tags:公司 面试 概率 排列组合 基础 回忆

昨天看到一道某公司三面的概率题,本质是排列组合,于是乎打算回顾下排列组合:


用C(n,m)表示从n个不同的物品选择m个的选法,n>=m combination


用P(n,m)表示从n个不同的物品选择m个进行排列的选法,n>=m permutation


昨天看到一道面试题,说是概率,其实本质就是求样本空间数的排列组合,和事件数排列组合,然后比一下,本质还是排列组合,当然如果你比较敏锐,直接用概率来算,也是可以的,而且更快


54张扑克牌均分成3堆,则大小王在一堆的概率?


样本空间数 C(54,18)*C(36,18)*C(18,18)/P(3,3)


上面显而易见,为何要除以P(3,3) 我总是习惯A(3,3)= =还是受以前的习惯?


因为三堆大小相同,你第一次选择的时候,不知道是哪一堆,或者更通俗的例子,1-6 均分3堆,12,34,56和34,12,56其实是一种,但在分子的数种算了两次,由于三个可以排列,即P(3,3),所以除以它。


如果不一样呢? 1-7分3,2,2三堆,C(7,3)C(4,2)C(2,2)/P(2,2),因为三个数和其他不同的,后面要除以P(2,2),例如123,45,67 123,67,45是一个,但是在里面算了两次,


因此我们来看大小王在一堆事件数。


C(2,2)C(52,16)C(36,18)C(18,18)/P(2,2), 类比前面,从52个选16个陪在大小王边上,之间是没有重复的,不管三堆怎么换(而之前的6个分三堆不一样,第一次选12,后面34,56和第一次34,后面12,56是一种,然而在公式里算重了) 而后面


是两堆一样的,可能重,故除以P(2,2)


算概率了~~~


P(X=大小王在一堆)= C(2,2)C(52,16)C(36,18)C(18,18)/P(2,2) / C(54,18)*C(36,18)*C(18,18)/P(3,3) =17/53


我看到某博客上答案好像不对啊~~~~


经过和sumnous_t大神的交涉,博客上答案改正过来啦~~~答案不重要,最重要的是思维,思路开阔,我喜欢这种探讨~~~~


顺带提几个重要的组合公式,有了新的对应事件的解释:


C(n,m)=C(n-1,m-1)+C(n-1,m-1) 我每次要完全回忆都会稍借助比较小的数据, C(4,2)=C(3,2)+C(3,1)


将组合数朝着小的方向分解,类似分治,且后一项都为m-1


看到百度百科有一个新的解释,从n个选m个,对于其中一个,可以选或不选,根据这个feature(我理解成ML的特征)只有两种,且之间不重复,并起来等于原问题,


选的话C(n-1,m-1) 不选的话C(n-1,m)


因此C(n,m)=C(1,1)C(n-1,m-1)+C(1,0)C(n-1,m)


从这里我又得到启发,推新的公式,对于其中两个,可以选0,1,2个,


C(n,m)=C(2,0)C(n-2,m)+C(2,1)C(n-2,m-1)+C(2,2)C(n-2,m-2) //用小的case检验正确


还有一个更逆天的公式。。


notation:


Sum(K=1,N)f(K)表示求和


也是从N个选M个,不排列,那么对N-M个数从1编号,另外M个数


选1,剩下选m-1 C(n-1,m-1),选1只有一种


不选1,选2,剩下选m-1 C(n-2,m-1),不选1 选2 在1,2的四种组合中是一种


...


不选1...N-M-1, 选N-M, 剩下选m-1,C(m,m-1)


不选1,...N-M, 剩下选M C(m,m)=C(m-1,m-1)


这N-M+1个情况,之间没有交集,因为给定编号的N-M个数完全不同(case1与case2...n-m+1不同,关于选不选1,不同是互相的,所以case2只要与case3...n-m+1比较就可以了,case2与case3...casen-m+1不同,一直下去,所有的互不相同,没交集),并且并起来,包含了全部N个选M个的情况(有点难理解,选了1或者不选1,不选1又包含了选2 和不选2 ,然后一直下去)


因此得


Sum(k=m,n)C(k-1,m-1)=C(n,m) (n>=m)


因此两个组合重要公式:


1. C(n,m)=C(1,1)C(n-1,m-1)+C(1,0)C(n-1,m)


鄙人又扩充了一个C(n,m)=C(2,0)C(n-2,m)+C(2,1)C(n-2,m-1)+C(2,2)C(n-2,m-2)


2.Sum(k=m,n)C(k-1,m-1)=C(n,m) (n>=m)


另外关于是否要除于排列数对于简单的情况有了一个总结


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇C++ 成员函数 回调函数的实现 下一篇递归算法转换为非递归算法

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: