Introdução
Neste laboratório, aprenderemos a calcular probabilidades binomiais na linguagem de programação C. O laboratório cobre os seguintes passos:
- 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).
- Implementar funções para calcular o fatorial e as combinações (n escolhe k), que são usadas na fórmula da probabilidade binomial.
- 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.
- 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:
- Declarar variáveis para n, p e k
- Usar
scanf()para ler entradas inteiras e de ponto flutuante - 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:
factorial(): Calcula n!combinations(): Calcula C(n,k) ou o número de maneiras de escolher k itens de nbinomial_probability(): Calcula P(X=k) usando a fórmula completa- 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:
- Adição de formatação detalhada dos resultados
- Exibição de múltiplas representações da probabilidade
- 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.



