Calcular Probabilidades Binomiales en C

CBeginner
Practicar Ahora

Introducción

En este laboratorio, aprenderemos cómo calcular probabilidades binomiales en el lenguaje de programación C. El laboratorio cubre los siguientes pasos:

  1. Leer los valores de entrada para el cálculo de la probabilidad binomial, incluyendo el número de ensayos (n), la probabilidad de éxito (p) y el número de éxitos (k).
  2. Implementar funciones para calcular el factorial y las combinaciones (n combinado k), que se utilizan en la fórmula de la probabilidad binomial.
  3. Calcular la probabilidad binomial utilizando la fórmula P(X=k) = C(n,k) _ p^k _ (1-p)^(n-k), donde C(n,k) representa las combinaciones.
  4. Imprimir la probabilidad calculada.

Al final de este laboratorio, tendrás una sólida comprensión de cómo trabajar con probabilidades binomiales en C y podrás aplicar estos conceptos a diversos problemas del mundo real.

Leer n, p, k

En este paso, aprenderemos cómo leer los valores de entrada para el cálculo de la probabilidad binomial: n (número de ensayos), p (probabilidad de éxito) y k (número de éxitos).

Primero, creemos un programa en C para leer estos valores de entrada:

#include <stdio.h>

int main() {
    int n, k;
    double p;

    printf("Enter number of trials (n): ");
    scanf("%d", &n);

    printf("Enter probability of success (p): ");
    scanf("%lf", &p);

    printf("Enter number of successes (k): ");
    scanf("%d", &k);

    printf("Input values:\n");
    printf("n = %d\n", n);
    printf("p = %.2f\n", p);
    printf("k = %d\n", k);

    return 0;
}

Guardemos este archivo y compílemoslo:

nano ~/project/binomial_prob.c
gcc ~/project/binomial_prob.c -o ~/project/binomial_prob

Ejemplo de salida al ejecutar el programa:

Enter number of trials (n): 10
Enter probability of success (p): 0.5
Enter number of successes (k): 6
Input values:
n = 10
p = 0.50
k = 6

Este programa demuestra cómo:

  1. Declarar variables para n, p y k
  2. Usar scanf() para leer entradas enteras y de punto flotante
  3. Imprimir los valores de entrada para verificación

Los valores de entrada representan:

  • n: Número total de ensayos independientes
  • p: Probabilidad de éxito en cada ensayo
  • k: Número de ensayos exitosos para los cuales queremos calcular la probabilidad

Calcular P(X=k)=C(n,k)p^k(1-p)^(n-k)

En este paso, extendaremos nuestro programa anterior para calcular la probabilidad binomial utilizando la fórmula P(X=k) = C(n,k) _ p^k _ (1-p)^(n-k).

Agregaremos funciones para calcular las combinaciones y la probabilidad binomial:

#include <stdio.h>
#include <math.h>

// Function to calculate factorial
unsigned long long factorial(int n) {
    if (n <= 1) return 1;
    return n * factorial(n - 1);
}

// Function to calculate combinations (n choose k)
unsigned long long combinations(int n, int k) {
    return factorial(n) / (factorial(k) * factorial(n - k));
}

// Function to calculate binomial probability
double binomial_probability(int n, int k, double p) {
    unsigned long long combinations_value = combinations(n, k);
    double probability = combinations_value *
                         pow(p, k) *
                         pow(1 - p, n - k);
    return probability;
}

int main() {
    int n, k;
    double p;

    printf("Enter number of trials (n): ");
    scanf("%d", &n);

    printf("Enter probability of success (p): ");
    scanf("%lf", &p);

    printf("Enter number of successes (k): ");
    scanf("%d", &k);

    double prob = binomial_probability(n, k, p);

    printf("Binomial Probability P(X=%d) = %f\n", k, prob);

    return 0;
}

Compila y ejecuta el programa:

gcc ~/project/binomial_prob.c -o ~/project/binomial_prob -lm
~/project/binomial_prob

Ejemplo de salida:

Enter number of trials (n): 10
Enter probability of success (p): 0.5
Enter number of successes (k): 6
Binomial Probability P(X=6) = 0.205078

Componentes clave del cálculo de la probabilidad binomial:

  1. factorial(): Calcula n!
  2. combinations(): Calcula C(n,k) o el número de formas de elegir k elementos de n
  3. binomial_probability(): Calcula P(X=k) utilizando la fórmula completa
  4. Función pow() de math.h utilizada para la exponenciación

Imprimir la Probabilidad

En este paso, mejoraremos nuestro programa de cálculo de probabilidad binomial para proporcionar una salida más detallada y formateada del cálculo de la probabilidad.

Modificaremos el programa anterior para incluir representaciones adicionales de la probabilidad:

#include <stdio.h>
#include <math.h>

// Previous functions (factorial, combinations, binomial_probability) remain the same

int main() {
    int n, k;
    double p;

    printf("Enter number of trials (n): ");
    scanf("%d", &n);

    printf("Enter probability of success (p): ");
    scanf("%lf", &p);

    printf("Enter number of successes (k): ");
    scanf("%d", &k);

    double prob = binomial_probability(n, k, p);

    // Detailed probability output
    printf("\nProbability Calculation Results:\n");
    printf("-----------------------------\n");
    printf("Number of Trials (n):       %d\n", n);
    printf("Probability of Success (p): %.4f\n", p);
    printf("Number of Successes (k):    %d\n", k);

    // Different probability representations
    printf("\nProbability Representations:\n");
    printf("Decimal:     %f\n", prob);
    printf("Percentage:  %.2f%%\n", prob * 100);
    printf("Fraction:    1 in %.0f\n", 1.0 / prob);

    return 0;
}

Compila y ejecuta el programa:

gcc ~/project/binomial_prob.c -o ~/project/binomial_prob -lm
~/project/binomial_prob

Ejemplo de salida:

Enter number of trials (n): 10
Enter probability of success (p): 0.5
Enter number of successes (k): 6

Probability Calculation Results:
-----------------------------
Number of Trials (n):       10
Probability of Success (p): 0.5000
Number of Successes (k):    6

Probability Representations:
Decimal:     0.205078
Percentage:  20.51%
Fraction:    1 in 5

Mejoras clave en este paso:

  1. Se agregó un formato detallado de los resultados.
  2. Se mostraron múltiples representaciones de la probabilidad.
  3. Se mejoró la legibilidad de la salida.

Resumen

En este laboratorio, aprendimos cómo leer los valores de entrada para el cálculo de la probabilidad binomial, incluyendo el número de ensayos (n), la probabilidad de éxito (p) y el número de éxitos (k). También implementamos funciones para calcular el factorial, las combinaciones y la fórmula de la probabilidad binomial P(X=k) = C(n,k) _ p^k _ (1-p)^(n-k). Esto nos permite calcular la probabilidad de observar k éxitos en n ensayos independientes, dado la probabilidad de éxito en cada ensayo.

Los pasos clave cubiertos en este laboratorio incluyen leer los valores de entrada, calcular la probabilidad binomial utilizando la fórmula y imprimir la probabilidad resultante. Este conocimiento se puede aplicar a diversos escenarios del mundo real donde la probabilidad binomial es relevante, como en estadística, toma de decisiones y análisis de riesgos.