歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> 某公司面試概率題值排列組合基礎回憶

某公司面試概率題值排列組合基礎回憶

日期:2017/3/1 9:43:17   编辑:Linux編程

昨天看到一道某公司三面的概率題,本質是排列組合,於是乎打算回顧下排列組合:

用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)

另外關於是否要除於排列數對於簡單的情況有了一個總結

Copyright © Linux教程網 All Rights Reserved