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 = 1 Output : 0.500000 Input : N = 4, R = 3 Output : 0.250000
Approach
Probability of getting K heads in N coin tosses can be calculated using below formula of binomial distribution of probability:
Below is the implementation of the above approach:
#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;
} |
import java.io.*;
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 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 |
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 |
<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)