Sunday, September 22, 2024
Google search engine
HomeData Modelling & AIProbability of A winning the match when individual probabilities of hitting the...

Probability of A winning the match when individual probabilities of hitting the target given

Given four integers a, b, c and d. Player A & B try to score a penalty. Probability of A shooting the target is a / b while probability of B shooting the target is c / d. The player who scores the penalty first wins. The task is to find the probability of A winning the match.
Examples: 
 

Input: a = 1, b = 3, c = 1, d = 3 
Output: 0.6
Input: a = 1, b = 2, c = 10, d = 11 
Output: 0.52381 
 

 

Approach: If we consider variables K = a / b as the probability of A shooting the target and R = (1 – (a / b)) * (1 – (c / d)) as the probability that A as well as B both missing the target. 
Therefore, the solution forms a Geometric progression K * R0 + K * R1 + K * R2 + ….. whose sum is (K / 1 – R). After putting the values of K and R we get the formula as K * (1 / (1 – (1 – r) * (1 – k))).
Below is the implementation of the above approach: 
 

C++




// C++ implementation of the approach
#include <bits/stdc++.h>
using namespace std;
 
// Function to return the probability of A winning
double getProbability(int a, int b, int c, int d)
{
 
    // p and q store the values
    // of fractions a / b and c / d
    double p = (double)a / (double)b;
    double q = (double)c / (double)d;
 
    // To store the winning probability of A
    double ans = p * (1 / (1 - (1 - q) * (1 - p)));
    return ans;
}
 
// Driver code
int main()
{
    int a = 1, b = 2, c = 10, d = 11;
    cout << getProbability(a, b, c, d);
 
    return 0;
}


Java




// Java implementation of the approach
class GFG
{
 
// Function to return the probability
// of A winning
static double getProbability(int a, int b,
                             int c, int d)
{
 
    // p and q store the values
    // of fractions a / b and c / d
    double p = (double) a / (double) b;
    double q = (double) c / (double) d;
 
    // To store the winning probability of A
    double ans = p * (1 / (1 - (1 - q) *
                               (1 - p)));
    return ans;
}
 
// Driver code
public static void main(String[] args)
{
    int a = 1, b = 2, c = 10, d = 11;
    System.out.printf("%.5f",
               getProbability(a, b, c, d));
}
}
 
// This code contributed by Rajput-Ji


Python3




# Python3 implementation of the approach
 
# Function to return the probability
# of A winning
def getProbability(a, b, c, d) :
 
    # p and q store the values
    # of fractions a / b and c / d
    p = a / b;
    q = c / d;
     
    # To store the winning probability of A
    ans = p * (1 / (1 - (1 - q) * (1 - p)));
     
    return round(ans,5);
 
# Driver code
if __name__ == "__main__" :
 
    a = 1; b = 2; c = 10; d = 11;
    print(getProbability(a, b, c, d));
 
# This code is contributed by Ryuga


C#




// C# implementation of the approach
using System;
 
class GFG
{
 
// Function to return the probability
// of A winning
public static double getProbability(int a, int b,
                                    int c, int d)
{
 
    // p and q store the values
    // of fractions a / b and c / d
    double p = (double) a / (double) b;
    double q = (double) c / (double) d;
 
    // To store the winning probability of A
    double ans = p * (1 / (1 - (1 - q) *
                               (1 - p)));
    return ans;
}
 
// Driver code
public static void Main(string[] args)
{
    int a = 1, b = 2, c = 10, d = 11;
    Console.Write("{0:F5}",
                   getProbability(a, b, c, d));
}
}
 
// This code is contributed by Shrikant13


PHP




<?php
// PHP implementation of the approach
 
// Function to return the probability
// of A winning
function getProbability($a, $b, $c, $d)
{
 
    // p and q store the values
    // of fractions a / b and c / d
    $p = $a / $b;
    $q = $c / $d;
 
    // To store the winning probability of A
    $ans = $p * (1 / (1 - (1 - $q) * (1 - $p)));
    return round($ans,6);
}
 
// Driver code
$a = 1;
$b = 2;
$c = 10;
$d = 11;
echo getProbability($a, $b, $c, $d);
 
// This code is contributed by chandan_jnu
?>


Javascript




<script>
 
// JavaScript implementation of the approach   
 
// Function to return the probability
// of A winning
    function getProbability(a , b , c , d) {
 
        // p and q store the values
        // of fractions a / b and c / d
        var p =  a /  b;
        var q =  c /  d;
 
        // To store the winning probability of A
        var ans = p * (1 / (1 - (1 - q) * (1 - p)));
        return ans;
    }
 
    // Driver code
     
        var a = 1, b = 2, c = 10, d = 11;
        document.write( getProbability(a, b, c, d).toFixed(5));
 
// This code contributed by aashish1995
 
</script>


Output: 

0.52381

 

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

Feeling lost in the world of random DSA topics, wasting time without progress? It’s time for a change! Join our DSA course, where we’ll guide you on an exciting journey to master DSA efficiently and on schedule.
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 neveropen!

RELATED ARTICLES

Most Popular

Recent Comments