Probability of hitting the target Nth time at Mth throw

Improve Article

Save Article

Like Article

Given integers N, M and p, the task is to find the probability of hitting a target for the Nth time at the Mth throw where p is the probability of hitting the target.

Examples:

Input: N = 1, M = 2, p = 0.3
Output: 0.21
Explanation: The target can be hit for the first time in the second throw only when the first throw is a miss.
So, the probability is multiplication of probability of hitting the target in second throw and probability of missing the target in the first throw = 0.3 * 0.7 = 0.21
because probability of missing  = 1 – probability of hitting.

Input: N = 8, M = 17, p = 0.4,
Output: 0.07555569565040642

Approach: The idea to solve the problem is based on the binomial distribution of probability

For getting Nth hit in the Mth throw there must be N-1 hits in the M-1 thrwos earlier and Nth throw must be a hit.
Say p is the probability of hitting and q is the probability of missing. q = 1 – p.
So the probability of getting N-1 hits in M-1 throws is: 
X = M-1CN-1 (pN-1qM-1-(N-1)) = M-1CN-1 (pN-1qM-N)
Therefore, the probability of hitting for Nth time is p*X = M-1CN-1 (pNqM-N)

Follow the below steps to implement the above idea:

  • Firstly, get the probability of not hitting a target.
  • Get the value of X as shown above.
  • Multiply the value of ‘p’ with it to get the actual answer.

Below is the implementation of the above approach.

Python3

  

def probab(p, m, n):

    q = 1-p

    res = fact(m-1)/fact(n-1)/fact(m-n)*p**(n-1)*q**(m-n)*p

    return res

  

def fact(f):

    fact = 1

    for i in range(1, f + 1):

        fact = i * fact

    return fact

  

  

if __name__ == '__main__':

    p = 0.3

    M = 2

    N = 1

    print(probab(p, M, N))

Output

0.21

Time Complexity: O(M)
Auxiliary Space: O(1)