N個不同球取出M個的組合個數求解


Technorati 標簽: 組合, 概率

從N個不同的球中取出M個,一共有多少種取法?

這個問題是組合數據的基本問題,考慮拿出球是否放回,拿出去的球是否有序,它有4種變體:

  1. 不放回,有序;
  2. 不放回,無序;
  3. 放回,無序;
  4. 放回,有序;

對於第一種,取出M個球,第一個有N種可能,第二個N-1種可能,依次類推,M個球共有:

N*(N-1)*(N-2)*..*(N-M+1),

舉個例子:3個同學(A,B,C),從中取出2位同學,那么可能的組合是:

A B
C
B A
C
C A
B

共計6種,剛好是3*(3-2+1)=6種。

--------------

接着看第二種,不放回,無序。由於是無序的,那么上面(無放回有序)的排列顯然存在重復,重復的次數正好等於M的全排列。因此它的組合數等於:

N*…*(N-M+1) / (M*(M-1)*…*1)

如果用推理計算的方式,我們可以得到一個遞歸式子:

f(n,m) = f(n-1,m)+f(n-1,m-1),表示如果包含頭元素f(n-1,m-1)種,不包含則為f(n-1,m)種。

--------------

第三種,有放回,有序。由於是有序的,M個球,第一個有N種可能,第二個球也有N種可能,。。。。依次類推,因此共有N*N*。。。*N,共M個N相乘。

舉個例子,3個球A,B,C,取出2個,那么可能的組合是:

A A
B
C
B A
B
C
C A
B
C

--------------

第四種,有放回,無序,是這里面最麻煩的一種。最直觀的做法,是和“無放回”的對應的,類比它們的做法,在結果(3)上除以一個因子:M的全排列。但是這里略有區別,因為在“無放回”的例子中,取出的球是不同的,因此不同的排列是M的階乘;但是在本case中,取出的球是有重復的,再除以M!就不對了。舉個例子,3個球取2個,有放回,無序:

A A
B
C
B B
C
C C

顯然是6種,並不是3*3/2種,后者竟然不是個整數。

那么正確的建模方式是什么呢?

首先:把M次取出球當成是M個標簽(相同的標簽,因為是無序的),把這些標簽貼到任意的球上,都貼在一個球上也沒有關系。

然后:把每個球當成是一個盒子,標簽當成是盒子里的球

最后:把盒子一個挨着一個排成一列,如下圖所示:“-”代表盒子的底部,“|”代表盒子的壁。

|-|-|-|

一種可能的結果是:|o|o|-|,表示A,B被拿出;那么|oo||-|則表示A被拿出2次;

更一般的,可以得出不同的組合數等於:內壁的個數(N-1)+標簽個數(M) 個位置中選出M個用於標簽。這顯然是無放回無序的問題,也就是C(N-1+M,M)。

驗算一下,設N=3,M=2,則C(4,2)=6。和結果一致。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM