Calcular Probabilidades de Poisson en C

CBeginner
Practicar Ahora

Introducción

En este laboratorio, aprenderás a calcular probabilidades de Poisson en C. La distribución de Poisson es una distribución de probabilidad que expresa la probabilidad de que ocurra un determinado número de eventos en un intervalo de tiempo o espacio fijo. Primero aprenderás a leer el parámetro lambda (λ) y el valor k, y luego implementarás la fórmula de probabilidad de Poisson para calcular la probabilidad de que ocurran exactamente k eventos en un intervalo dado.

El laboratorio cubre el proceso paso a paso de escribir un programa en C para calcular probabilidades de Poisson, incluyendo la gestión de la entrada del usuario, la implementación de la fórmula de probabilidad de Poisson y la impresión de la probabilidad calculada.

Leer λ (lambda) y k

En este paso, aprenderás a leer el parámetro lambda (λ) y el valor k para calcular probabilidades de Poisson en C. La distribución de Poisson es una distribución de probabilidad que expresa la probabilidad de que ocurra un determinado número de eventos en un intervalo de tiempo o espacio fijo.

Primero, creemos un nuevo archivo C para implementar el cálculo de la probabilidad de Poisson:

cd ~/project
nano poisson_prob.c

Ahora, agrega el siguiente código para leer los valores de lambda y k:

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

int main() {
    double lambda;
    int k;

    printf("Ingrese lambda (número medio de eventos): ");
    scanf("%lf", &lambda);

    printf("Ingrese k (número de ocurrencias): ");
    scanf("%d", &k);

    printf("Lambda (λ): %.2f\n", lambda);
    printf("k: %d\n", k);

    return 0;
}

Ejemplo de salida:

Ingrese lambda (número medio de eventos): 3.5
Ingrese k (número de ocurrencias): 2
Lambda (λ): 3.50
k: 2

Desglose del código:

  • Usamos double para lambda para permitir valores decimales.
  • scanf() se utiliza para leer la entrada del usuario para lambda y k.
  • El especificador de formato %lf se utiliza para valores de tipo double (número de punto flotante de precisión larga).
  • El especificador de formato %d se utiliza para valores enteros.
  • Imprimimos los valores introducidos para confirmar la entrada.

Compila el programa:

gcc -o poisson_prob poisson_prob.c -lm

Ejecuta el programa:

./poisson_prob

P(X=k)=e^(-λ)*λ^k/k!

En este paso, implementarás la fórmula de probabilidad de Poisson para calcular la probabilidad de que ocurran exactamente k eventos en un intervalo dado.

Abre el archivo anterior para modificar el código:

cd ~/project
nano poisson_prob.c

Actualiza el código para incluir el cálculo de la probabilidad de Poisson:

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

// Función para calcular el factorial
double factorial(int n) {
    if (n <= 1) return 1;
    double result = 1;
    for (int i = 2; i <= n; i++) {
        result *= i;
    }
    return result;
}

// Calcular la probabilidad de Poisson
double poisson_probability(double lambda, int k) {
    double numerador = pow(lambda, k) * exp(-lambda);
    double denominador = factorial(k);
    return numerador / denominador;
}

int main() {
    double lambda;
    int k;

    printf("Ingrese lambda (número medio de eventos): ");
    scanf("%lf", &lambda);

    printf("Ingrese k (número de ocurrencias): ");
    scanf("%d", &k);

    double probabilidad = poisson_probability(lambda, k);

    printf("Lambda (λ): %.2f\n", lambda);
    printf("k: %d\n", k);
    printf("Probabilidad P(X = %d): %.4f\n", k, probabilidad);

    return 0;
}

Compila el programa:

gcc -o poisson_prob poisson_prob.c -lm

Ejemplo de salida:

Ingrese lambda (número medio de eventos): 3.5
Ingrese k (número de ocurrencias): 2
Lambda (λ): 3.50
k: 2
Probabilidad P(X = 2): 0.1674

Puntos clave del código:

  • La función factorial() calcula k!
  • poisson_probability() implementa la fórmula de probabilidad de Poisson
  • pow() calcula λ^k
  • exp() calcula e^(-λ)
  • El resultado es la probabilidad de que ocurran exactamente k eventos.

Ejecuta el programa:

./poisson_prob

Imprimir la Probabilidad

En este paso final, mejorarás el programa de cálculo de probabilidad de Poisson agregando una impresión y formato de probabilidad más detallados.

Abre el archivo anterior para modificar el código:

cd ~/project
nano poisson_prob.c

Actualiza el código para mejorar la presentación de la probabilidad:

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

// Función para calcular el factorial
double factorial(int n) {
    if (n <= 1) return 1;
    double result = 1;
    for (int i = 2; i <= n; i++) {
        result *= i;
    }
    return result;
}

// Calcular la probabilidad de Poisson
double poisson_probability(double lambda, int k) {
    double numerator = pow(lambda, k) * exp(-lambda);
    double denominator = factorial(k);
    return numerator / denominator;
}

int main() {
    double lambda;
    int k;

    printf("Calculadora de Probabilidad de Poisson\n");
    printf("--------------------------------------\n");

    printf("Ingrese lambda (número medio de eventos): ");
    scanf("%lf", &lambda);

    printf("Ingrese k (número de ocurrencias): ");
    scanf("%d", &k);

    double probability = poisson_probability(lambda, k);

    printf("\nResultados del Cálculo:\n");
    printf("Lambda (λ): %.2f\n", lambda);
    printf("k: %d\n", k);
    printf("Probabilidad P(X = %d): %.4f\n", k, probability);
    printf("Porcentaje: %.2f%%\n", probability * 100);

    return 0;
}

Compila el programa:

gcc -o poisson_prob poisson_prob.c -lm

Ejemplo de salida:

Calculadora de Probabilidad de Poisson
--------------------------------------
Ingrese lambda (número medio de eventos): 3.5
Ingrese k (número de ocurrencias): 2

Resultados del Cálculo:
Lambda (λ): 3.50
k: 2
Probabilidad P(X = 2): 0.1674
Porcentaje: 16.74%

Mejoras clave:

  • Se agregó un título para la calculadora.
  • Se incluyó la representación en porcentaje.
  • Se mejoró el formato de la salida.
  • Se agregaron secciones de salida más descriptivas.

Ejecuta el programa:

./poisson_prob

Resumen

En este laboratorio, aprendiste a leer el parámetro lambda (λ) y el valor de k para calcular probabilidades de Poisson en C. Luego, implementaste la fórmula de probabilidad de Poisson para calcular la probabilidad de que ocurran exactamente k eventos en un intervalo dado. La distribución de Poisson es una distribución de probabilidad que expresa la probabilidad de que ocurra un número dado de eventos en un intervalo de tiempo o espacio fijo. También aprendiste a crear una función factorial para apoyar el cálculo de la probabilidad de Poisson.

Los pasos clave cubiertos en este laboratorio incluyen la lectura de los valores de entrada, el cálculo de la probabilidad de Poisson utilizando la fórmula P(X=k)=e^(-λ)*λ^k/k!, e imprimir la probabilidad resultante.