Resposta do “Jogo dos dados esquisitos”

Resposta de puzzle publicado anteriormente (https://ideiasesquecidas.com/2024/01/19/o-jogo-dos-dados-esquisitos/)

Não aceite a sugestão, e sugira que o oponente comece.

Este é um exemplo de “dados intransitivos”. Como no papel, pedra e tesoura.

Há 36 combinações possíveis (6×6), nos confrontos entre dois dados.

Basta simular no Excel ou no Python, ou na mão mesmo, todos os resultados. Isso, posto:

A vence B

C vence A

B vence C

Se eu escolher primeiro o A, ele escolhe o C.

Se eu escolher primeiro o B, ele escolhe o A.

Se eu escolher primeiro o C, ele escolhe o B.

Analogamente, é como se fosse um jankenpô onde um oponente começa primeiro e o outro escolhe, ao invés de ser simultâneo:

Se eu escolher pedra, ele escolhe papel.

Se eu escolher papel, ele escolhe tesoura.

Se eu escolher tesoura, ele escolhe pedra.

Este é um jogo intransitivo, pelas características citadas.


Adendo: Pediram para eu estimar a chance de vitória do Sr. Smith. Vamos lá.

Baseado na tabela do Excel com todas as possibilidades, e a regra:

Se eu escolher primeiro o A, ele escolhe o C.

Se eu escolher primeiro o B, ele escolhe o A.

Se eu escolher primeiro o C, ele escolhe o B.

Eu x Sr. Smith 
A X B: 20/36 = 55,5% (Sr. Smith)
B X C: 20/36 = 55,5% (Sr. Smith)
C X A: 20/36 = 55,5% (Sr. Smith)

Como há mesma probabilidade de eu começar escolhendo o dado A, B ou C, a probabilidade total é a média das três. Como são iguais, a probabilidade do Sr. Smith vencer é de 55,5%. 

Vamos conferir simulando com mil trials. Uma rotinazinha em Python resolve. Se quiser rodar, segue abaixo.

Esta rotina sorteia um dado para mim – o dado do Sr. Smith é dado pela regra acima.

A seguir, com o dado escolhido, a rotina simula o sorteio do dado:

Fazendo mil rodadas:

Realmente, dá em torno de 55% a chance do Sr. Smith vencer, embora de vez em quando eu possa vencer.

Segue código do Python, caso queira rodar:

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
“””
Created on Wed Jan 24 18:58:06 2024

@author: asgunzi
“””

import random

A =[20, 22, 41, 43, 95, 99]
B = [5, 7, 66, 67, 88, 89]
C =[30, 35, 52, 57, 72, 73]

vecDados = [A, B, C]

VitoriasMinhas =0 
VitoriasSmith =0 
label = [“A”,”B”,”C”]

for trial in range(10):
    #Eu escolho valor aleatório
    #’A’= 0, ‘B’ = 1, ‘C’ = 2
    Eu  = random.choice([0,1,2])
    
    #Sr. Smith: Se A, escolhe C; se B, escolhe A; se C, escolhe B    
    if Eu ==0:
        Smith = 2
    elif  Eu ==1:
        Smith = 0
    else:
        Smith = 1
        
    #Vamos rolar os dados!
    dadoMeu = random.choice(vecDados[Eu])
    dadoSmith = random.choice(vecDados[Smith])
    
    print(f”Rodada {trial}. Dado meu: {label[Eu]}. Dado Smith: {label[Smith]}. Sorteio Eu: {dadoMeu } Sorteio Smith: {dadoSmith} “)
    
    if dadoMeu >dadoSmith:
        VitoriasMinhas +=1
        print(f”Rodada {trial}: Vitória Minha. Eu {VitoriasMinhas} x Smith {VitoriasSmith}”)
    else:
        VitoriasSmith +=1
        print(f”Rodada {trial}: Vitória Smith. Eu {VitoriasMinhas} x Smith {VitoriasSmith}”)

        
print(“————-“)
print(f”Vitórias Smith: {VitoriasSmith*100/1000}%”)
        

Deixe um comentário