Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

1
resposta

Faça como eu fiz: utilizando cadeias de Markov

import numpy as np
estados = ["Ensolarado", "Nublado", "Chuvoso"]
matriz_transicao = np.array([
    [0.7, 0.2, 0.1],  
    [0.3, 0.4, 0.3],  
    [0.2, 0.3, 0.5] 
])

def prever_clima(estado_inicial, dias):
    estado_atual = estado_inicial

    print(f"Dia 1: {estado_atual}")

    for dia in range(2, dias + 1):
        indice_atual = estados.index(estado_atual)

        proximo_estado = np.random.choice(
            estados,
            p=matriz_transicao[indice_atual]
        )

        print(f"Dia {dia}: {proximo_estado}")

        estado_atual = proximo_estado
prever_clima("Ensolarado", 7)

Dia 1: Ensolarado
Dia 2: Nublado
Dia 3: Nublado
Dia 4: Ensolarado
Dia 5: Ensolarado
Dia 6: Ensolarado
Dia 7: Ensolarado
1 resposta

Oi, Marcelo! Como vai?

Seu exemplo ficou muito bom para demonstrar o funcionamento de cadeias de Markov, já que o próximo clima é escolhido com base no estado atual e nas probabilidades da matriz de transição. Gostei também da organização com a função prever_clima(), pois ela deixa a simulação reutilizável para outros estados iniciais e quantidades de dias.

Continue explorando esse tipo de modelo, porque ele ajuda a entender como sistemas podem lidar com incerteza e prever próximos estados de forma probabilística. Dica: para testar melhor o comportamento da matriz, você pode executar a função várias vezes e comparar os resultados, já que np.random.choice() pode gerar sequências diferentes a cada execução. Qual mudança você faria na matriz para aumentar a chance de dias chuvosos?

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!