Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Teste de probabilidade (%) de sorteio para cada um

A partir do código proposto no enunciado, logicamente que Tamires tem mais chances no sorteio (sorteio viciado), pois quando o resultado é 0 ou 3, ela terá mais condições de ser sorteada.

Creio que uma maneira de reverter isso é usar "elif" ao invés de "else" na porção condicional do código. Além de altera o range da função "random.randrange(0,4)", assim:

import random

sorteado = random.randrange(1,4)

print(sorteado)

if sorteado == 1:
    print( "Paulo")
elif sorteado == 2:
    print("Juliana")
elif sorteado == 3:
    print("Tamires")

Desta forma, os três terão as mesmas condições de ganhar.

Eu estive procurando uma forma de comparar as duas situações, probabilisticamente. A minha ideia é usar uma repetição de 100 sorteios e depois dos resultados, somar o montante de acertos de cada um dos três para checar a porcentagem de acerto (teoricamente cada um deve chegar a um valor próximo de 33%, no caso dos sorteios não viciados). Mas não soube muito como desenvolver isso. O que fiz até agora é gerar aleatoriamente os 100 sorteios com o seguinte código:

import random

lances = 100

for sorteio in range (1, lances + 1):
    sorteado = random.randrange(1, 4)
    print(sorteado)

    if sorteado == 1:
        print("Paulo")
    elif sorteado == 2:
        print("Juliana")
    elif sorteado == 3:
        print("Tamires")

Como poderia comparar a probabilidade de sorteio de cada um?

2 respostas
solução!

Olá, você poderia adicionar valor a uma variável para cada vez que uma delas tenha sido escolhida, por exemplo: antes defina as variáveis escolha, escolha2 e escolha3 tendo seu valor como 0 e dentro do loop for

  if sorteado == 1:
        print("Paulo")
        escolha +=1
    elif sorteado == 2:
        print("Juliana")
        escolha2 +=1
    elif sorteado == 3:
        print("Tamires")
        escolha3 +=1

finalizando o loop só printar o a variavel escolha de cada um, se preferir pode mostrar em porcentagem fazendo uma simples regra de 3 com as variáveis obtidas, espero ter ajudado.

Show Caio! Valeu, deu certo. Acabou ficando assim:

import random

lances = 100000

totalPaulo = 0
totalJuliana = 0
totalTamires = 0

for sorteio in range (1, lances + 1):
    sorteado = random.randrange(1, 4)
    print(sorteado)

    if sorteado == 1:
        print("Paulo")
        totalPaulo = totalPaulo + 1
    elif sorteado == 2:
        print("Juliana")
        totalJuliana = totalJuliana + 1
    elif sorteado == 3:
        print("Tamires")
        totalTamires = totalTamires + 1

probPaulo = totalPaulo * 100 / lances

probJuliana = totalJuliana * 100 / lances

probTamires = totalTamires * 100 / lances

print(probPaulo, "%")

print(probJuliana, "%")

print(probTamires, "%")

O número de lances fica a critério do usuário, mas fiz um teste de 100 mil sorteios, logo a chance de acerto de cada um é próximo de 33%, como esperado.

Agora, realizando o mesmo teste só que para o erro do exercício (código viciado):

import random

lances = 100000

totalPaulo = 0
totalJuliana = 0
totalTamires = 0

for sorteio in range (1, lances + 1):
    sorteado = random.randrange(0, 4)
    print(sorteado)

    if sorteado == 1:
        print("Paulo")
        totalPaulo = totalPaulo + 1
    elif sorteado == 2:
        print("Juliana")
        totalJuliana = totalJuliana + 1
    else:
        print("Tamires")
        totalTamires = totalTamires + 1


probPaulo = totalPaulo * 100 / lances

probJuliana = totalJuliana * 100 / lances

probTamires = totalTamires * 100 / lances

print(probPaulo, "%")

print(probJuliana, "%")

print(probTamires, "%")

Após 100 mil sorteios, Tamires tem cerca de 50% de chances de acerto, contra 25% para os demais.