Calcular Probabilidades Binomiais em C

CBeginner
Pratique Agora

Introdução

Neste laboratório, aprenderemos a calcular probabilidades binomiais na linguagem de programação C. O laboratório cobre os seguintes passos:

  1. Ler os valores de entrada para o cálculo da probabilidade binomial, incluindo o número de ensaios (n), a probabilidade de sucesso (p) e o número de sucessos (k).
  2. Implementar funções para calcular o fatorial e as combinações (n escolhe k), que são usadas na fórmula da probabilidade binomial.
  3. Calcular a probabilidade binomial usando a fórmula P(X=k) = C(n,k) _ p^k _ (1-p)^(n-k), onde C(n,k) representa as combinações.
  4. Imprimir a probabilidade calculada.

No final deste laboratório, terá uma compreensão sólida de como trabalhar com probabilidades binomiais em C e será capaz de aplicar estes conceitos a vários problemas do mundo real.

Ler n, p, k

Neste passo, aprenderemos a ler os valores de entrada para o cálculo da probabilidade binomial: n (número de ensaios), p (probabilidade de sucesso) e k (número de sucessos).

Primeiro, vamos criar um programa C para ler estes valores de entrada:

#include <stdio.h>

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

    printf("Introduza o número de ensaios (n): ");
    scanf("%d", &n);

    printf("Introduza a probabilidade de sucesso (p): ");
    scanf("%lf", &p);

    printf("Introduza o número de sucessos (k): ");
    scanf("%d", &k);

    printf("Valores de entrada:\n");
    printf("n = %d\n", n);
    printf("p = %.2f\n", p);
    printf("k = %d\n", k);

    return 0;
}

Vamos salvar este ficheiro e compilá-lo:

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

Exemplo de saída ao executar o programa:

Introduza o número de ensaios (n): 10
Introduza a probabilidade de sucesso (p): 0.5
Introduza o número de sucessos (k): 6
Valores de entrada:
n = 10
p = 0.50
k = 6

Este programa demonstra como:

  1. Declarar variáveis para n, p e k
  2. Usar scanf() para ler entradas inteiras e de ponto flutuante
  3. Imprimir os valores de entrada para verificação

Os valores de entrada representam:

  • n: Número total de ensaios independentes
  • p: Probabilidade de sucesso em cada ensaio
  • k: Número de ensaios bem-sucedidos para os quais queremos calcular a probabilidade

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

Neste passo, estenderemos o nosso programa anterior para calcular a probabilidade binomial usando a fórmula P(X=k) = C(n,k) _ p^k _ (1-p)^(n-k).

Adicionaremos funções para calcular as combinações e a probabilidade binomial:

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

// Função para calcular o fatorial
unsigned long long factorial(int n) {
    if (n <= 1) return 1;
    return n * factorial(n - 1);
}

// Função para calcular as combinações (n escolhe k)
unsigned long long combinations(int n, int k) {
    return factorial(n) / (factorial(k) * factorial(n - k));
}

// Função para calcular a probabilidade binomial
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("Introduza o número de ensaios (n): ");
    scanf("%d", &n);

    printf("Introduza a probabilidade de sucesso (p): ");
    scanf("%lf", &p);

    printf("Introduza o número de sucessos (k): ");
    scanf("%d", &k);

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

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

    return 0;
}

Compile e execute o programa:

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

Exemplo de saída:

Introduza o número de ensaios (n): 10
Introduza a probabilidade de sucesso (p): 0.5
Introduza o número de sucessos (k): 6
Probabilidade Binomial P(X=6) = 0.205078

Componentes chave do cálculo da probabilidade binomial:

  1. factorial(): Calcula n!
  2. combinations(): Calcula C(n,k) ou o número de maneiras de escolher k itens de n
  3. binomial_probability(): Calcula P(X=k) usando a fórmula completa
  4. Função pow() de math.h usada para exponenciação

Imprimir a Probabilidade

Neste passo, melhoraremos o nosso programa de probabilidade binomial para fornecer uma saída mais detalhada e formatada do cálculo da probabilidade.

Modificaremos o programa anterior para incluir representações de probabilidade adicionais:

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

// As funções anteriores (factorial, combinations, binomial_probability) permanecem as mesmas

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

    printf("Introduza o número de ensaios (n): ");
    scanf("%d", &n);

    printf("Introduza a probabilidade de sucesso (p): ");
    scanf("%lf", &p);

    printf("Introduza o número de sucessos (k): ");
    scanf("%d", &k);

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

    // Saída detalhada do cálculo da probabilidade
    printf("\nResultados do Cálculo da Probabilidade:\n");
    printf("-----------------------------\n");
    printf("Número de Ensaios (n):       %d\n", n);
    printf("Probabilidade de Sucesso (p): %.4f\n", p);
    printf("Número de Sucessos (k):    %d\n", k);

    // Representações diferentes da probabilidade
    printf("\nRepresentações da Probabilidade:\n");
    printf("Decimal:     %f\n", prob);
    printf("Porcentagem:  %.2f%%\n", prob * 100);
    printf("Fração:      1 em %.0f\n", 1.0 / prob);

    return 0;
}

Compile e execute o programa:

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

Exemplo de saída:

Introduza o número de ensaios (n): 10
Introduza a probabilidade de sucesso (p): 0.5
Introduza o número de sucessos (k): 6

Resultados do Cálculo da Probabilidade:
-----------------------------
Número de Ensaios (n):       10
Probabilidade de Sucesso (p): 0.5000
Número de Sucessos (k):    6

Representações da Probabilidade:
Decimal:     0.205078
Porcentagem:  20.51%
Fração:      1 em 5

Melhorias chave neste passo:

  1. Adição de formatação detalhada dos resultados
  2. Exibição de múltiplas representações da probabilidade
  3. Melhoria da legibilidade da saída

Summary

In this lab, we learned how to read input values for binomial probability calculation, including the number of trials (n), probability of success (p), and number of successes (k). We also implemented functions to calculate factorial, combinations, and the binomial probability formula P(X=k) = C(n,k) _ p^k _ (1-p)^(n-k). This allows us to compute the probability of observing k successes in n independent trials, given the probability of success in each trial.

The key steps covered in this lab include reading input values, computing the binomial probability using the formula, and printing the resulting probability. This knowledge can be applied to various real-world scenarios where binomial probability is relevant, such as in statistics, decision-making, and risk analysis.