# Probability of distributing M items among X bags such that first bag contains N items

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 Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.