En 168 levantadas cuantas veces se reciben 2 o más dobles

 Escenario:

  En 168 levantadas cuantas veces se reciben 2 o más dobles


Resultado:

  98 veces (58, 33%)


Python:

import random
from collections import defaultdict

# 1. Función para crear el set completo de dominó (28 piedras del 0 al 6)
def create_domino_set():
"""Genera un set estándar de 28 dominós (del 0-0 al 6-6)."""
dominoes = []
for i in range(7):
for j in range(i, 7):
dominoes.append((i, j))
return dominoes

# 2. Función para repartir las piedras a los jugadores
def deal_dominoes(num_players=3, stones_per_player=7):
"""
Baraja un set completo de dominó y reparte las piedras a los jugadores.
Devuelve una lista de manos, donde cada mano es una lista de dominós.
"""
dominoes = create_domino_set()
random.shuffle(dominoes)
hands = []
for _ in range(num_players):
# Asegurarse de que haya suficientes dominós para repartir
if len(dominoes) < stones_per_player:
raise ValueError("No hay suficientes dominós para repartir a todos los jugadores.")
hand = [dominoes.pop() for _ in range(stones_per_player)]
hands.append(hand)
return hands

# Nueva simulación para contar dobles en la mano del Jugador 1
NUM_SIMULATIONS_DOUBLES = 168
p1_doubles_count = 0

print(f"Iniciando {NUM_SIMULATIONS_DOUBLES} simulaciones para contar dobles en la mano del Jugador 1...")

for i in range(NUM_SIMULATIONS_DOUBLES):
hands = deal_dominoes(num_players=4, stones_per_player=7)
p1_hand = hands[0] # Get Player 1's hand

# Count doubles in P1's hand
doubles_in_p1_hand = 0
for domino in p1_hand:
if domino[0] == domino[1]:
doubles_in_p1_hand += 1

if doubles_in_p1_hand >= 2:
p1_doubles_count += 1

print(f"\nDe un total de {NUM_SIMULATIONS_DOUBLES} simulaciones, el Jugador 1 recibió 2 o más dobles {p1_doubles_count} veces.")

Comments

Popular Posts