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}%”)
