Open In App

Probability of getting a sum on throwing 2 Dices N times

Improve
Improve
Like Article
Like
Save
Share
Report

Given the sum. The task is to find out the probability of occurring that sum on the thrown of the two dice N times. 
Probability is defined as the favorable numbers of outcomes upon total numbers of the outcome. Probability always lies between 0 and 1.
Examples: 

Input: sum = 11, times = 1
Output: 2 / 36
favorable outcomes = (5, 6) and (6, 5) i.e 2
Total outcomes = (1, 1), (1, 2), (1, 3)...(6, 6) i.e 36
Probability = (2 / 36)

Input: sum = 7, times = 7
Output: 1 / 279936

 

Formula:-
 

The probability of occurring sum on throwing 2 dices N times = (favorable/total) ^ N

Approach:-
 

First of All, Calculates the probability of Occurring that sum on thrown of 2 dice 1 times. 
Let say it Probability1. 
Now, to calculate the Probability of occurring that sum on thrown of 2 dice N times be: 
Probability2 = (Probability1) ^ N. i.e Probability1 raise to power N 
 

Below is the implementation of above approach: 
 

C++




// C++ implementation of above approach
#include <bits/stdc++.h>
using namespace std;
 
// function that calculates Probability.
int Probability(int sum, int times)
{
 
    float favorable = 0.0, total = 36.0;
    long int probability = 0;
 
    // To calculate favorable outcomes
    // in thrown of 2 dices 1 times.
    for (int i = 1; i <= 6; i++) {
        for (int j = 1; j <= 6; j++) {
            if ((i + j) == sum)
                favorable++;
        }
    }
 
    int gcd1 = __gcd((int)favorable, (int)total);
 
    // Reduce to simplest Form.
    favorable = favorable / (float)gcd1;
    total = total / (float)gcd1;
 
    // Probability of occurring sum on 2 dice N times.
    probability = pow(total, times);
 
    return probability;
}
 
// Driver Code
int main()
{
    int sum = 7, times = 7;
 
    cout << "1"
         << "/" << Probability(sum, times);
    return 0;
}


Java




// Java implementation of above approach
import java.io.*;
 
class GFG
{
// Recursive function to return
// gcd of a and b
static int __gcd(int a, int b)
{
    // Everything divides 0
    if (a == 0)
    return b;
    if (b == 0)
    return a;
     
    // base case
    if (a == b)
        return a;
     
    // a is greater
    if (a > b)
        return __gcd(a - b, b);
    return __gcd(a, b - a);
}
 
// function that calculates
// Probability.
static long Probability(int sum,
                        int times)
{
 
    float favorable = 0, total = 36;
    long probability = 0;
 
    // To calculate favorable outcomes
    // in thrown of 2 dices 1 times.
    for (int i = 1; i <= 6; i++)
    {
        for (int j = 1; j <= 6; j++)
        {
            if ((i + j) == sum)
                favorable++;
        }
    }
 
    int gcd1 = __gcd((int)favorable,
                     (int)total);
 
    // Reduce to simplest Form.
    favorable = favorable / (float)gcd1;
    total = total / (float)gcd1;
 
    // Probability of occurring
    // sum on 2 dice N times.
    probability = (long)Math.pow(total, times);
 
    return probability;
}
 
// Driver Code
public static void main (String[] args)
{
    int sum = 7, times = 7;
     
    System.out.println( "1" + "/" +
          Probability(sum, times));
}
}
 
// This code is contributed
// by inder_verma


Python 3




# Python 3 implementation of above approach
 
# from math import everything
from math import *
 
# function that calculates Probability.
def Probability(sum, times) :
    favorable, total, probability = 0.0, 36.0, 0
 
    # To calculate favorable outcomes
    # in thrown of 2 dices 1 times.
    for i in range(7) :
        for j in range(7) :
            if ((i + j) == sum) :
                favorable += 1
 
    gcd1 = gcd(int(favorable), int(total))
 
    # Reduce to simplest Form.
    favorable = favorable / gcd1
    total = total / gcd1
 
    # Probability of occurring sum on 2 dice N times.
    probability = pow(total, times)
 
    return int(probability)
 
 
# Driver Code
if __name__ == "__main__" :
 
    sum, times = 7, 7
 
    print("1","/",Probability(sum, times))
 
 
# This code is contributed by ANKITRAI1


C#




// C# implementation of above approach
 
class GFG
{
// Recursive function to return
// gcd of a and b
static int __gcd(int a, int b)
{
    // Everything divides 0
    if (a == 0)
    return b;
    if (b == 0)
    return a;
     
    // base case
    if (a == b)
        return a;
     
    // a is greater
    if (a > b)
        return __gcd(a - b, b);
    return __gcd(a, b - a);
}
 
// function that calculates
// Probability.
static long Probability(int sum,
                        int times)
{
 
    float favorable = 0, total = 36;
    long probability = 0;
 
    // To calculate favorable outcomes
    // in thrown of 2 dices 1 times.
    for (int i = 1; i <= 6; i++)
    {
        for (int j = 1; j <= 6; j++)
        {
            if ((i + j) == sum)
                favorable++;
        }
    }
 
    int gcd1 = __gcd((int)favorable,
                    (int)total);
 
    // Reduce to simplest Form.
    favorable = favorable / (float)gcd1;
    total = total / (float)gcd1;
 
    // Probability of occurring
    // sum on 2 dice N times.
    probability = (long)System.Math.Pow(total, times);
 
    return probability;
}
 
// Driver Code
public static void Main()
{
    int sum = 7, times = 7;
     
    System.Console.WriteLine( "1" + "/" +
        Probability(sum, times));
}
}
 
// This code is contributed
// by mits


PHP




<?php
// PHP implementation of above approach
 
// function to calculate gcd
function getGCDBetween($a, $b)
{
    while ($b != 0)
    {
        $m = $a % $b;
        $a = $b;
        $b = $m;
    }
    return $a;
}
 
// function that calculates Probability.
function Probability($sum, $times)
{
 
    $favorable = 0.0;
    $total = 36.0;
    $probability = 0;
 
    // To calculate favorable outcomes
    // in thrown of 2 dices 1 times.
    for ($i = 1; $i <= 6; $i++)
    {
        for ($j = 1; $j <= 6; $j++)
        {
            if (($i + $j) == $sum)
                $favorable++;
        }
    }
 
    $gcd1 = getGCDBetween((int)$favorable,
                          (int)$total);
 
    // Reduce to simplest Form.
    $favorable = $favorable / (float)$gcd1;
    $total = $total / (float)$gcd1;
 
    // Probability of occurring
    // sum on 2 dice N times.
    $probability = pow($total, $times);
 
    return $probability;
}
 
// Driver Code
$sum = 7;
$times = 7;
 
echo "1", "/", Probability($sum, $times);
 
// This code is contributed by ash264   
?>


Javascript




<script>
 
// Javascript implementation of above approach
 
// Recursive function to return
// gcd of a and b
function __gcd(a, b)
{
    // Everything divides 0
    if (a == 0)
    return b;
    if (b == 0)
    return a;
       
    // base case
    if (a == b)
        return a;
       
    // a is greater
    if (a > b)
        return __gcd(a - b, b);
    return __gcd(a, b - a);
}
 
// function that calculates Probability.
function Probability(sum, times)
{
    var favorable = 0.0, total = 36.0;
    var probability = 0;
 
    // To calculate favorable outcomes
    // in thrown of 2 dices 1 times.
    for (var i = 1; i <= 6; i++) {
        for (var j = 1; j <= 6; j++) {
            if ((i + j) == sum)
                favorable++;
        }
    }
 
    var gcd1 = __gcd(favorable, total);
 
    // Reduce to simplest Form.
    favorable = favorable / gcd1;
    total = total / gcd1;
 
    // Probability of occurring sum on 2 dice N times.
    probability = Math.pow(total, times);
 
    return probability;
}
 
// Driver Code
var sum = 7, times = 7;
document.write( "1"
    + "/" + Probability(sum, times));
 
</script>


Output: 

1/279936

 

Time complexity: O(logN), for using gcd and pow functions.
Auxiliary Space: O(1)



Last Updated : 25 Sep, 2022
Like Article
Save Article
Previous
Next
Share your thoughts in the comments
Similar Reads