MATLAB計算階乘 排列數與組合數

2021-09-12 06:30:00 字數 803 閱讀 2729

在1500件產品中有400件次品,1100件**,任取200件

求恰有90件次品的概率;

求至少有兩件次品的概率。

這是一道古典概型的概率問題,題目比較簡單,很容易求得概率,其中

但是,計算量較大,於是筆者希望通過maltab程式設計計算出數值。

經查閱得知通過階乘、排列數的對應命令如下:

筆者天真的以為通過下面兩行

p1=nchoosek(400,90)*nchoosek(1100,110)/nchoosek(1500,200)

p2=1-((nchoosek(400,0)*nchoosek(1100,200)+nchoosek(400,1)*nchoosek(1100,199))/nchoosek(1500,200))

便可以計算出答案,然而事實如下圖:

由於係數過大,得到的資料並不準確。於是筆者想到了用分數表示最終結果,經查閱資料得知,使用 "format rat"命令即可使輸出結果轉化為分數形式,經測試,結果如下:

得到的結果仍然是可能不準確的,因此使用matlab計算排列數與組合數是可以的,但是數值不能過大,超過計算機處理的上下限。

最後,通過matlab計算階乘、排列數與組合數以及使輸出結果為分數的命令分別為:

fotmat rat——輸出結果為分數

排列數A n, m 的計算

排列數是在n個互不相同的數中選出m個能組成的不同次序的排列的方案數。公式上就等於組合數 全排列,即a n,m n n m 可以說是a1 a2 a3 am,ai n m i。所以也是乙個巨大的數,在計算時通常會要求模p。舉一道題 給出n,m,p,求a n,m p。雖然m很小,但是鑑於n,p的範圍,直接...

組合數與排列數

1 組合數與排列數是什麼 組合 有乙個袋子,裡面有10個標有1 10數字的球,問如果每次拿出3個球,一共有多少不同的組合?1,2,3 和 3,1,2 算一種,不考慮次序。排序 有乙個袋子,裡面有10個標有1 10數字的球,問如果每次拿出3個球,一共有多少不同的排序?1,2,3 和 3,1,2 算二種...

9 大數,高精度計算 大數階乘

大數是演算法語言中的資料型別無法表示的數,其位數超過最大資料型別所能表示的範圍,所以,在處理大數問題時首先要考慮的是怎樣儲存大數,然後是在這種儲存方式下其處理的實現方法。一般情況下大數的儲存是採用字元陣列來儲存,即將大數當作乙個字串來儲存,而對其處理是按其處理規則在陣列中模擬實現。階乘問題比較典型,...