# Probability of getting K heads in N coin tosses

Given two integers **N** and **R**. The task is to calculate the probability of getting exactly **r** heads in **n** successive tosses.

A fair coin has an equal probability of landing a head or a tail on each toss.

**Examples:**

Input :N = 1, R = 1Output :0.500000Input :N = 4, R = 3Output :0.250000

**Approach**

Probability of getting K heads in N coin tosses can be calculated using below formula of binomial distribution of probability:

where p = probability of getting head and q = probability of getting tail. p and q both are 1/2. So the equation becomes

Below is the implementation of the above approach:

## C++

`#include <bits/stdc++.h>` `using` `namespace` `std;` `// function to calculate factorial` `int` `fact(` `int` `n)` `{` ` ` `int` `res = 1;` ` ` `for` `(` `int` `i = 2; i <= n; i++)` ` ` `res = res * i;` ` ` `return` `res;` `}` `// apply the formula` `double` `count_heads(` `int` `n, ` `int` `r)` `{` ` ` `double` `output;` ` ` `output = fact(n) / (fact(r) * fact(n - r));` ` ` `output = output / (` `pow` `(2, n));` ` ` `return` `output;` `}` `// Driver function` `int` `main()` `{` ` ` `int` `n = 4, r = 3;` ` ` ` ` `// call count_heads with n and r` ` ` `cout << count_heads(n, r);` ` ` `return` `0;` `}` |

## Java

`class` `GFG{` ` ` `// function to calculate factorial` `static` `int` `fact(` `int` `n)` `{` ` ` `int` `res = ` `1` `;` ` ` `for` `(` `int` `i = ` `2` `; i <= n; i++)` ` ` `res = res * i;` ` ` `return` `res;` `}` ` ` `// apply the formula` `static` `double` `count_heads(` `int` `n, ` `int` `r)` `{` ` ` `double` `output;` ` ` `output = fact(n) / (fact(r) * fact(n - r));` ` ` `output = output / (Math.pow(` `2` `, n));` ` ` `return` `output;` `}` ` ` `// Driver function` `public` `static` `void` `main(String[] args)` `{` ` ` `int` `n = ` `4` `, r = ` `3` `;` ` ` ` ` `// call count_heads with n and r` ` ` `System.out.print(count_heads(n, r));` `}` `}` `// This code is contributed by 29AjayKumar` |

## Python3

`# Python3 program to find probability` `# of getting K heads in N coin tosses` `# Function to calculate factorial` `def` `fact(n):` ` ` ` ` `res ` `=` `1` ` ` `for` `i ` `in` `range` `(` `2` `, n ` `+` `1` `):` ` ` `res ` `=` `res ` `*` `i` ` ` `return` `res` `# Applying the formula` `def` `count_heads(n, r):` ` ` ` ` `output ` `=` `fact(n) ` `/` `(fact(r) ` `*` `fact(n ` `-` `r))` ` ` `output ` `=` `output ` `/` `(` `pow` `(` `2` `, n))` ` ` `return` `output` `# Driver code` `n ` `=` `4` `r ` `=` `3` `# Call count_heads with n and r` `print` `(count_heads(n, r))` `# This code is contributed by Pratik Basu` |

## C#

`using` `System;` `public` `class` `GFG{` ` ` `// Function to calculate factorial` `static` `int` `fact(` `int` `n)` `{` ` ` `int` `res = 1;` ` ` `for` `(` `int` `i = 2; i <= n; i++)` ` ` `res = res * i;` ` ` `return` `res;` `}` ` ` `// Apply the formula` `static` `double` `count_heads(` `int` `n, ` `int` `r)` `{` ` ` `double` `output;` ` ` `output = fact(n) / (fact(r) * fact(n - r));` ` ` `output = output / (Math.Pow(2, n));` ` ` `return` `output;` `}` ` ` `// Driver function` `public` `static` `void` `Main(String[] args)` `{` ` ` `int` `n = 4, r = 3;` ` ` ` ` `// Call count_heads with n and r` ` ` `Console.Write(count_heads(n, r));` `}` `}` `// This code contributed by sapnasingh4991` |

## Javascript

`<script>` `// Function to calculate factorial` `function` `fact(n)` `{` ` ` `var` `res = 1;` ` ` `for` `(` `var` `i = 2; i <= n; i++)` ` ` `res = res * i;` ` ` ` ` `return` `res;` `}` `// Apply the formula` `function` `count_heads(n, r)` `{` ` ` `var` `output;` ` ` `output = fact(n) / (fact(r) * fact(n - r));` ` ` `output = output / (Math.pow(2, n));` ` ` `return` `output;` `}` `// Driver Code` `var` `n = 4, r = 3;` `// Call count_heads with n and r` `document.write(count_heads(n, r));` `// This code is contributed by noob2000` `</script>` |

**Output:**

0.250000

**Time Complexity: **In this implementation, we have to calculate factorial based on the value **n**, so time complexity would be **O(n)** **Auxiliary Space: **In this implementation, we are not using any extra space, so auxiliary space required is **O(1)**