Untitled

 avatar
unknown
plain_text
a year ago
4.0 kB
12
Indexable
import random

def monty_hall_simulacao(n):
    # Inicialização das variáveis
    ganhos = 0
    ganhos_mudando = 0
    ganhos_mantendo = 0
    perdas = 0
    perdas_mudando = 0
    perdas_mantendo = 0
    
    # Lopping que simula várias partidas do jogo de Monty Hall
    for _ in range(n):
        # Escolha aleatória inicial do jogador
        escolha = random.randint(1, 3)
        # A porta com o carro
        porta_carro = random.randint(1, 3)
        # Monty escolhe uma porta com uma cabra que não foi escolhida pelo jogador
        monty_escolha = random.choice([p for p in range(1, 4) if p != escolha and p != porta_carro])
        # A porta que sobrou, que não é nem a porta do jogador nem a porta de Monty
        outra_porta = [p for p in range(1, 4) if p != escolha and p != monty_escolha][0]
        # variável que irá armazenar as duas possibilidades de escolha do Jogador, que seria manter ou trocar a porta
        possibilidades_escolhas = [escolha, outra_porta]
        # Decisão aleatória sobre manter ou trocar a porta
        escolha_definitiva = random.choice(possibilidades_escolhas)
        """ 
          Se a escolha definitiva do jogador for trocar a porta, e a outra porta
          for a porta do carro, o contador irá adicionar +1 para os ganhos e +1 para
          os ganhos mudando
        """
        if escolha_definitiva == outra_porta and outra_porta == porta_carro:
            ganhos += 1
            ganhos_mudando += 1
        """ 
          Se a escolha definitiva do jogador for trocar a porta, e a outra porta
          NÃO for a porta do carro, o contador irá adicionar +1 para as perdas e +1 para
          as perdas mudando
        """
        if escolha_definitiva == outra_porta and outra_porta != porta_carro:
            perdas += 1
            perdas_mudando += 1
        """ 
          Se a escolha definitiva do jogador for manter a porta, e a porta
          for a porta do carro, o contador irá adicionar +1 para os ganhos e +1 para
          os ganhos mantendo
        """
        if escolha_definitiva == escolha and escolha == porta_carro:
            ganhos += 1
            ganhos_mantendo += 1
        """ 
          Se a escolha definitiva do jogador for manter a porta, e a porta
          NÃO for a porta do carro, o contador irá adicionar +1 para as perdas e +1 para
          as perdas mantendo
        """
        if escolha_definitiva == escolha and escolha != porta_carro:
            perdas += 1
            perdas_mantendo += 1
    
    #Após o looping, os valores serão retornados para o programa principal
    return ganhos, ganhos_mudando, ganhos_mantendo, perdas, perdas_mudando, perdas_mantendo

#Número pré-estabelecido de 100.000 simulações, para testar a teoria dos grandes números
n_simulacoes = 100000
#Chamada da função
ganhos, ganhos_mudando, ganhos_mantendo, perdas, perdas_mudando, perdas_mantendo = monty_hall_simulacao(n_simulacoes)


# Perdas e ganhos e o percentuual
percentual_ganhos = ganhos / n_simulacoes
percentual_perdas = perdas / n_simulacoes
print("Ganhos: ", ganhos)
print("Perdas: ", perdas)
print("Percentual ganhos: ", percentual_ganhos)
print("Percentual perdas: ", percentual_perdas)

#Ganhos mudando/ ganhos mantendo
probabilidade_ganhos_mudando = ganhos_mudando / ganhos
probabilidade_ganhos_mantendo = ganhos_mantendo / ganhos
print("\nGanhos mudando: ", ganhos_mudando)
print("Percentual: ", probabilidade_ganhos_mudando)
print("Ganhos mantendo: ", ganhos_mantendo)
print("Percentual: ", probabilidade_ganhos_mantendo)

#Perdas mudando/ perdans mantendo
probabilidade_perdas_mudando = perdas_mudando / perdas
probabilidade_perdas_mantendo = perdas_mantendo / perdas
print("\nPerdas mudando: ", perdas_mudando)
print("Percentual : ", probabilidade_perdas_mudando)
print("Perdas mantendo: ", perdas_mantendo)
print("Percentual", probabilidade_perdas_mantendo) 
Editor is loading...
Leave a Comment