给定总和。任务是找出在两次掷骰子N次后出现该总和的概率。
概率定义为在结果总数上的有利结果数。机率永远在0到1之间。
例子:
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
公式:-
The probability of occurring sum on throwing 2 dices N times = (favorable/total) ^ N
方法:-
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
下面是上述方法的实现:
C++
// C++ implementation of above approach
#include
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
Javascript
输出:
1/279936