Untitled
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