Related Articles
Probability of distributing M items among X bags such that first bag contains N items
• Last Updated : 22 Jul, 2019

Given three integers N, M, X. The task is to find the probability of distributing M items among X bags such that first bag contains N items

Examples:

Input : M = 7, X =3, N = 3
Output : 0.2
The Number of ways to keep 7 items in 3 bags is .
The Number of ways to keep 4 items in 2 bags is . As the first bag contains 3 items.
The probability is / Input : M = 9, X = 3, N = 4
Output : 0.142857

## Recommended: Please try your approach on {IDE} first, before moving on to the solution.

Approach :
In general, the Number of ways to place N items in K bags is .

• The Number of ways to keep M items in X bags is .
• The Number of ways to keep (M-N) items in (X-1) bags is . As the first bag contains N items.
• The probability is / .

Below is the implementation of the above approach:

## C++

 `// CPP program to find probability of``// first bag to contain N items such``// that M items are distributed among X bags``#include ``using` `namespace` `std;`` ` `// Function to find factorial of a number``int` `factorial(``int` `n)``{``    ``if` `(n <= 1)``        ``return` `1;``    ``return` `n * factorial(n - 1);``}`` ` `// Function to find nCr``int` `nCr(``int` `n, ``int` `r)``{``    ``return` `factorial(n) / (factorial(r) * factorial(n - r));``}`` ` `// Function to find probability of``// first bag to contain N items such``// that M items are distributed among X bags``float` `Probability(``int` `M, ``int` `N, ``int` `X)``{``    ``return` `(``float``)(nCr(M - N - 1, X - 2) / ``                    ``(nCr(M - 1, X - 1) * 1.0));``}`` ` `// Driver code``int` `main()``{``    ``int` `M = 9, X = 3, N = 4;`` ` `    ``// Function call``    ``cout << Probability(M, N, X);`` ` `    ``return` `0;``}`

## Java

 `// Java program to find probability of ``// first bag to contain N items such ``// that M items are distributed among X bags`` ` `class` `GFG ``{`` ` `    ``// Function to find factorial of a number``    ``public` `static` `int` `factorial(``int` `n)``    ``{``        ``if` `(n <= ``1``)``            ``return` `1``;`` ` `        ``return` `n * factorial(n - ``1``);``    ``}`` ` `    ``// Function to find nCr``    ``public` `static` `int` `nCr(``int` `n, ``int` `r) ``    ``{``        ``return` `factorial(n) / (factorial(r) * factorial(n - r));``    ``}`` ` `    ``// Function to find probability of``    ``// first bag to contain N items such``    ``// that M items are distributed among X bags``    ``public` `static` `float` `Probability(``int` `M, ``int` `N, ``int` `X) ``    ``{``        ``return` `(``float``) (nCr(M - N - ``1``, X - ``2``) / (nCr(M - ``1``, X - ``1``) * ``1.0``));``    ``}`` ` `    ``// Driver code``    ``public` `static` `void` `main(String[] args)``    ``{``        ``int` `M = ``9``, X = ``3``, N = ``4``;`` ` `        ``// Function call``        ``System.out.println(Probability(M, N, X));``    ``}``}`` ` `// This code is contributed by``// sanjeev2552`

## Python3

 `# Python3 program to find probability of ``# first bag to contain N items such ``# that M items are distributed among X bags `` ` `# Function to find factorial of a number ``def` `factorial(n) : `` ` `    ``if` `(n <``=` `1``) :``        ``return` `1``; ``         ` `    ``return` `n ``*` `factorial(n ``-` `1``); `` ` `# Function to find nCr ``def` `nCr(n, r) : `` ` `    ``return` `(factorial(n) ``/` `(factorial(r) ``*``                            ``factorial(n ``-` `r))); `` ` `# Function to find probability of ``# first bag to contain N items such ``# that M items are distributed among X bags ``def` `Probability(M, N, X) : `` ` `    ``return` `float``(nCr(M ``-` `N ``-` `1``, X ``-` `2``) ``/` `                ``(nCr(M ``-` `1``, X ``-` `1``) ``*` `1.0``)); `` ` `# Driver code ``if` `__name__ ``=``=` `"__main__"` `: `` ` `    ``M ``=` `9``; X ``=` `3``; N ``=` `4``; `` ` `    ``# Function call ``    ``print``(Probability(M, N, X)); `` ` `# This code is contributed by AnkitRai01`

## C#

 `// C# program to find probability of ``// first bag to contain N items such ``// that M items are distributed among X bags``using` `System;`` ` `class` `GFG ``{``  ` `    ``// Function to find factorial of a number``    ``static` `int` `factorial(``int` `n)``    ``{``        ``if` `(n <= 1)``            ``return` `1;``  ` `        ``return` `n * factorial(n - 1);``    ``}``  ` `    ``// Function to find nCr``    ``static` `int` `nCr(``int` `n, ``int` `r) ``    ``{``        ``return` `factorial(n) / (factorial(r) * factorial(n - r));``    ``}``  ` `    ``// Function to find probability of``    ``// first bag to contain N items such``    ``// that M items are distributed among X bags``    ``static` `float` `Probability(``int` `M, ``int` `N, ``int` `X) ``    ``{``        ``return` `(``float``) (nCr(M - N - 1, X - 2) / (nCr(M - 1, X - 1) * 1.0));``    ``}``  ` `    ``// Driver code``    ``static` `void` `Main()``    ``{``        ``int` `M = 9, X = 3, N = 4;``  ` `        ``// Function call``        ``Console.WriteLine(Probability(M, N, X));``    ``}``}``  ` `// This code is contributed by``// mohitkumar 29`
Output:
```0.142857
```

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.

My Personal Notes arrow_drop_up