Skip to content

Este repositório explora o cálculo de probabilidades usando as distribuições de Bernoulli e Binomial, aplicadas ao lançamento de dados. São abordadas situações como a probabilidade de obter um número específico em múltiplos lançamentos e o comportamento de eventos independentes em experimentos binários.

License

Notifications You must be signed in to change notification settings

thiagond-code/binomial

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 

Repository files navigation

🇺🇸 EN
🇧🇷 PT

🇺🇸

🎲 Binomial — Dice Simulation

This program is designed to compute probabilities related to dice rolls using Bernoulli and Binomial distributions. It calculates the expected value, variance and the probability of a specific outcome occurring a certain number of times when rolling a die multiple times.

🚀 Features

  • Bernoulli Distribution: Calculates the probability of rolling a specific number on a single die roll.

  • Binomial Distribution: Calculates the probability of a specific number occurring a certain number of times in a series of die rolls.

  • Factorial Calculation: Used for computing binomial coefficients in the binomial distribution formula.

  • Input Validation: Ensures that inputs are valid and meaningful (positive integers).


🗒️ Table of Contents

  1. ℹ️ Description
  2. 📝 How to Use
  3. ⚙️ Functions
  4. 💡 Example
  5. 📜 License

ℹ️ Description

This program prompts the user for input parameters and calculates various statistics based on dice rolls. Specifically, it uses the Bernoulli distribution for a single roll and the Binomial distribution for multiple rolls. The program also handles errors for invalid inputs and ensures that the number of rolls and successes are reasonable.

Input Parameters:

  1. Number of faces on the die: The program asks the user to specify how many faces their die has.

  2. Desired number: The user inputs the number they want to track on the die.

  3. Number of rolls: The user indicates how many times the die will be rolled.

  4. Desired number of successes: The program calculates the probability of the desired number showing up a specific number of times across all rolls.

Output:

  • The program outputs the expected value (E[X]), variance and the probability of the desired number showing up a specific number of times.

  • For single die rolls, it computes the Bernoulli distribution (with equal probability for each face of the die).

  • For multiple rolls, it computes the Binomial distribution using factorials.


📝 How to Use

  1. Compile the Code:

    gcc -o binomial binomial.c -lm
    
  2. Run the Program:

    ./binomial
    
  3. Input Prompts: The program will sequentially ask you for the following inputs:

  • Number of faces on the die
  • The number you want to track for success
  • The number of rolls
  • The number of times you want the number to appear (for multiple rolls)

The program will validate that the inputs are correct and provide an error message if necessary.

  1. Results: Once the program receives all the inputs, it will output the following information:
  • The expected value (E[X])
  • The variance
  • The probability of the specific number showing up a desired number of times

⚙️ Functions

1. bool check_number(int arr_len, int arr[], int num)

📌 Purpose

Checks if a given number exists in the list of die faces.

  • Parameters:
    • arr_len: The number of faces on the die.
    • arr[]: An array containing the faces of the die.
    • num: The number to check.

↩️ Returns: true if the number exists in the array, otherwise false.


2. long long factorial(int num)

📌 Purpose

Computes the factorial of a number using recursion.

  • Parameters:
    • num: The number to calculate the factorial for.

↩️ Returns: The factorial of the given number.


3. float bernoulli(int num_faces)

📌 Purpose

Calculates the probability of a specific number on a single die roll.

  • Parameters:
    • num_faces: The number of faces on the die.

↩️ Returns: The probability of rolling any specific face (1/n).


4. void binomial(int num_faces, int rounds, int success_num, int successes)

📌 Purpose

Calculates the binomial distribution for multiple dice rolls, specifically the probability of the desired number showing up a certain number of times.

  • Parameters:
    • num_faces: The number of faces on the die.
    • rounds: The number of times the die is rolled.
    • success_num: The number to track for success.
    • successes: The number of successes (desired outcomes) for the calculation.

↩️ Returns: None. It prints the results of the probability calculation.


💡 Example

Example 1: Single Roll

For a six-faced die, the user might input:

  • Number of faces: 6
  • Desired number: 3
  • Number of rolls: 1

The program will output:

RESULT:

The expected value (E[X]) is 1/6 or approximately 0.17
The variance is ±0.17
The probability of rolling the number 3, one time, on a 6-sided die is 16.67%

Example 2: Multiple Rolls (Binomial Distribution)

For a six-faced die, the user might input:

  • Number of faces: 6
  • Desired number: 3
  • Number of rolls: 5
  • Desired number of successes: 2

The program will output:

RESULT:

The expected value (E[X]) is 5/6 or approximately 0.83
The variance is ±0.14
Considering 5 rolls of a 6-sided die, the probability of rolling the number 3 exactly 2 times is 3.43%.

📜 License

This program is open source and distributed under the MIT License. See the LICENSE file for more details.


Feel free to modify and use this program for your dice probability calculations! 🎲✨


🇧🇷

🎲 Binomial — Simulação de Dados

Este programa foi projetado para calcular probabilidades relacionadas a lançamentos de dados, utilizando distribuições de Bernoulli e Binomial. Ele calcula o valor esperado, a variância e a probabilidade de um resultado específico ocorrer um determinado número de vezes ao lançar um dado várias vezes.

🚀 Funcionalidades

  • Distribuição de Bernoulli: Calcula a probabilidade de obter um número específico em um único lançamento de dado.

  • Distribuição Binomial: Calcula a probabilidade de um número específico ocorrer um determinado número de vezes em uma série de lançamentos de dados.

  • Cálculo de Fatorial: Usado para calcular os coeficientes binomiais na fórmula da distribuição binomial.

  • Validação de Entrada: Garante que as entradas sejam válidas e significativas (números inteiros positivos).

Índice

  1. ℹ️ Descrição
  2. 📝 Como Usar
  3. ⚙️ Funções
  4. 💡 Exemplo
  5. 📜 Licença

ℹ️ Descrição

Este programa solicita parâmetros de entrada ao usuário e calcula várias estatísticas com base nos lançamentos de dados. Especificamente, ele utiliza a distribuição de Bernoulli para um único lançamento e a distribuição Binomial para múltiplos lançamentos. O programa também trata erros de entradas inválidas e garante que o número de lançamentos e sucessos sejam razoáveis.

Parâmetros de Entrada:

  1. Número de faces no dado: O programa solicita ao usuário que informe quantas faces o dado possui.

  2. Número desejado: O usuário informa o número que deseja rastrear no dado.

  3. Número de lançamentos: O usuário indica quantas vezes o dado será lançado.

  4. Número desejado de sucessos: O programa calcula a probabilidade de o número desejado aparecer um número específico de vezes nos lançamentos.

Saída:

  • O programa retorna o valor esperado (E[X]), a variância e a probabilidade do número desejado aparecer um número específico de vezes.

  • Para lançamentos únicos de dados, ele calcula a distribuição de Bernoulli (com probabilidade igual para cada face do dado).

  • Para múltiplos lançamentos, ele calcula a distribuição Binomial usando fatoriais.


📝 Como Usar

  1. Compile o Código:

    gcc -o binomial binomial.c -lm
    
  2. Execute o Programa:

    ./binomial
    
  3. Entradas: O programa solicitará sequencialmente os seguintes parâmetros:

  • Número de faces no dado
  • O número que você deseja rastrear como sucesso
  • O número de lançamentos
  • O número de vezes que você quer que o número apareça (para múltiplos lançamentos)

O programa validará as entradas e fornecerá uma mensagem de erro, caso necessário.

  1. Resultados: Após receber todos os parâmetros, o programa exibirá as seguintes informações:
  • O valor esperado (E[X])
  • A variância
  • A probabilidade do número desejado aparecer um número específico de vezes

⚙️ Funções

1. bool check_number(int arr_len, int arr[], int num)

📌 Objetivo

Verifica se um número dado existe na lista de faces do dado.

  • Parâmetros:
    • arr_len: O número de faces no dado.
    • arr[]: Um array contendo as faces do dado.
    • num: O número a ser verificado.

↩️ Retorno: true se o número existir no array, caso contrário, false.


2. long long factorial(int num)

📌 Objetivo

Calcula o fatorial de um número utilizando recursão.

  • Parâmetros:
    • num: O número para o qual o fatorial será calculado.

↩️ Retorno: O fatorial do número fornecido.


3. float bernoulli(int num_faces)

📌 Objetivo

Calcula a probabilidade de obter um número específico em um único lançamento de dado.

  • Parâmetros:
    • num_faces: O número de faces do dado.

↩️ Retorno: A probabilidade de obter uma face específica (1/n).


4. void binomial(int num_faces, int rounds, int success_num, int successes)

📌 Objetivo

Calcula a distribuição binomial para múltiplos lançamentos de dados, especificamente a probabilidade de o número desejado aparecer um número específico de vezes.

  • Parâmetros:
    • num_faces: O número de faces do dado.
    • rounds: O número de lançamentos do dado.
    • success_num: O número a ser rastreado como sucesso.
    • successes: O número de sucessos (resultados desejados) para o cálculo.

↩️ Retorno: Nenhum. A função imprime os resultados do cálculo da probabilidade.


💡 Exemplo

Exemplo 1: Lançamento Único

Para um dado de seis faces, o usuário pode informar:

  • Número de faces: 6
  • Número desejado: 3
  • Número de lançamentos: 1

O programa exibirá:

RESULTADO:

O valor esperado (E[X]) é 1/6 ou aproximadamente 0.17
A variância é ±0.17
A probabilidade de obter o número 3 em um lançamento de um dado de 6 faces é de 16.67%

Exemplo 2: Múltiplos Lançamentos (Distribuição Binomial)

Para um dado de seis faces, o usuário pode informar:

  • Número de faces: 6
  • Número desejado: 3
  • Número de lançamentos: 5
  • Número desejado de sucessos: 2

O programa exibirá:

RESULTADO:

O valor esperado (E[X]) é 5/6 ou aproximadamente 0.83
A variância é ±0.14
Considerando 5 lançamentos de um dado de 6 faces, a probabilidade de obter o número 3 exatamente 2 vezes é de 3,43%.

📜 Licença

Este programa é de código aberto e distribuído sob a Licença MIT. Consulte o arquivo LICENSE para mais detalhes.


Fique à vontade para modificar e usar este programa para seus cálculos de probabilidades com dados! 🎲✨


About

Este repositório explora o cálculo de probabilidades usando as distribuições de Bernoulli e Binomial, aplicadas ao lançamento de dados. São abordadas situações como a probabilidade de obter um número específico em múltiplos lançamentos e o comportamento de eventos independentes em experimentos binários.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages