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 Codeint main(){ int sum = 7, times = 7; cout << "1" << "/" << Probability(sum, times); return 0;} |
Java
// Java implementation of above approachimport 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 Codepublic 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 everythingfrom 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 Codeif __name__ == "__main__" : sum, times = 7, 7 print("1","/",Probability(sum, times))# This code is contributed by ANKITRAI1 |
C#
// C# implementation of above approachclass 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 Codepublic 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 gcdfunction 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 Codevar sum = 7, times = 7;document.write( "1" + "/" + Probability(sum, times));</script> |
1/279936
Time complexity: O(logN), for using gcd and pow functions.
Auxiliary Space: O(1)
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 neveropen!
