Untitled
unknown
plain_text
2 years ago
4.0 kB
17
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