Probabilidade Part-1

Probabilidade Part-1


#I2A2

Determinístico

A sequência recursiva, amplamente utilizada em campos como matemática e ciência da computação, destaca-se pela previsibilidade de seus elementos, devido sua regra de construção. A capacidade de antecipar com precisão qualquer elemento torna essa abordagem valiosa em modelagem de padrões e processos iterativos.

Quanto a modelos determinísticos, podemos destacar a possibilidade de repetições, onde conhecendo-se a semente inicial e a regra de construção podemos predizer o seu comportamento. Esse conceito, presente em fundamentos físicos como eletricidade, mecânica e cinemática, permite a previsão exata da saída de experimentos sob condições iniciais conhecidas.

Probabilístico

A transição para experimentos aleatórios introduz a incerteza, onde a predição exata da saída torna-se impossível. No entanto, os modelos probabilísticos entram em cena, permitindo a determinação das probabilidades associadas a cada possível resultado. Mesmo diante da imprevisibilidade individual de cada experimento, a análise de um grande conjunto de dados revela padrões.

Conceitos fundamentais, como espaço amostral e eventos, fazem parte do cenário probabilístico. O espaço amostral é o conjunto de saídas possíveis, enquanto eventos representam os elementos desse conjunto. A relação entre eventos é definida por situações como evento impossível, evento certo, união e interseção, e a complementaridade (não ocorrer) de um evento.

Exemplo

Qual a frequência com que sai cara frente ao número de experimentos?

import numpy as np
import matplotlib.pyplot as plt

def coin_toss():
    result = np.random.choice([{1: 'cara'}, {0: 'coroa'}])
    return result

def is_heads(coin_toss_result):
    return coin_toss_result.get(1) == 'cara'

def experiment(n_attempts):
    arr_results = []

    for _ in range(n_attempts):
        coin_toss_result = coin_toss()
        arr_results.append(coin_toss_result)
    return arr_results

def n_heads(experiment_result):
    result = 0
    for coin_toss_result in experiment_result:
        if is_heads(coin_toss_result):
            result += 1
    return result

# Número máximo de experimentos
max_attempts = 1000

# Listas para armazenar os resultados
num_experiments = []
head_frequencies = []

# Realizar os experimentos variando o número de tentativas
for n_attempts in range(1, max_attempts + 1):
    results = experiment(n_attempts)
    head_count = n_heads(results)
    
    # Calcular a frequência de caras
    head_frequency = head_count / n_attempts
    
    # Armazenar os resultados
    num_experiments.append(n_attempts)
    head_frequencies.append(head_frequency)

# Criar o gráfico de linha
plt.plot(num_experiments, head_frequencies, marker='o')
plt.xlabel('Número de Experimentos')
plt.ylabel('Frequência de Cara')
plt.title('Variação da Frequência de Cara com o Número de Experimentos')
plt.grid(True)
plt.show()

Plot

'Variação da Frequência de Cara com o Número de Experimentos'