Dados dos números enteros N y R . La tarea es calcular la probabilidad de obtener exactamente r caras en n lanzamientos sucesivos.
Una moneda justa tiene la misma probabilidad de caer cara o cruz en cada lanzamiento.
Ejemplos:
Input : N = 1, R = 1 Output : 0.500000 Input : N = 4, R = 3 Output : 0.250000
Enfoque
La probabilidad de obtener K caras en N lanzamientos de moneda se puede calcular utilizando la siguiente fórmula de distribución binomial de probabilidad:
donde p = probabilidad de obtener cara yq = probabilidad de obtener cruz. pyq ambos son 1/2. Entonces la ecuación se convierte en
A continuación se muestra la implementación del enfoque anterior:
C++
#include <bits/stdc++.h> using namespace std; // function to calculate factorial int fact(int n) { int res = 1; for (int i = 2; i <= n; i++) res = res * i; return res; } // apply the formula double count_heads(int n, int r) { double output; output = fact(n) / (fact(r) * fact(n - r)); output = output / (pow(2, n)); return output; } // Driver function int main() { int n = 4, r = 3; // call count_heads with n and r cout << count_heads(n, r); return 0; }
Java
class GFG{ // function to calculate factorial static int fact(int n) { int res = 1; for (int i = 2; i <= n; i++) res = res * i; return res; } // apply the formula static double count_heads(int n, int r) { double output; output = fact(n) / (fact(r) * fact(n - r)); output = output / (Math.pow(2, n)); return output; } // Driver function public static void main(String[] args) { int n = 4, r = 3; // call count_heads with n and r System.out.print(count_heads(n, r)); } } // This code is contributed by 29AjayKumar
Python3
# Python3 program to find probability # of getting K heads in N coin tosses # Function to calculate factorial def fact(n): res = 1 for i in range(2, n + 1): res = res * i return res # Applying the formula def count_heads(n, r): output = fact(n) / (fact(r) * fact(n - r)) output = output / (pow(2, n)) return output # Driver code n = 4 r = 3 # Call count_heads with n and r print (count_heads(n, r)) # This code is contributed by Pratik Basu
C#
using System; public class GFG{ // Function to calculate factorial static int fact(int n) { int res = 1; for (int i = 2; i <= n; i++) res = res * i; return res; } // Apply the formula static double count_heads(int n, int r) { double output; output = fact(n) / (fact(r) * fact(n - r)); output = output / (Math.Pow(2, n)); return output; } // Driver function public static void Main(String[] args) { int n = 4, r = 3; // Call count_heads with n and r Console.Write(count_heads(n, r)); } } // This code contributed by sapnasingh4991
Javascript
<script> // Function to calculate factorial function fact(n) { var res = 1; for(var i = 2; i <= n; i++) res = res * i; return res; } // Apply the formula function count_heads(n, r) { var output; output = fact(n) / (fact(r) * fact(n - r)); output = output / (Math.pow(2, n)); return output; } // Driver Code var n = 4, r = 3; // Call count_heads with n and r document.write(count_heads(n, r)); // This code is contributed by noob2000 </script>
0.250000
Complejidad del tiempo: en esta implementación, tenemos que calcular el factorial en función del valor n , por lo que la complejidad del tiempo sería O(n)
Espacio auxiliar: en esta implementación, no usamos ningún espacio adicional, por lo que el espacio auxiliar requerido es O(1 )
Publicación traducida automáticamente
Artículo escrito por siddhanthapliyal y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA