Diego Alejandro Muñoz Camayo
PreguntaHola, al momento de hacer la probabilidad me da “0.0”, mi código es el siguiente:
import random def tirar_dado(numero_de_tiros): secuencia_de_tiros = [] secuencia_de_tiros2 = [] for _ in range(numero_de_tiros): tiro = random.choice([1, 2, 3, 4, 5, 6]) tiro2 = random.choice([1, 2, 3, 4, 5, 6]) secuencia_de_tiros.append(tiro) secuencia_de_tiros2.append(tiro2) return secuencia_de_tiros, secuencia_de_tiros2 def main(numero_de_tiros, numero_de_intentos): tiros = [] tiros2 = [] for _ in range(numero_de_intentos): secuencia_de_tiros = tirar_dado(numero_de_tiros) tiros.append(secuencia_de_tiros) secuencia_de_tiros2 = tirar_dado(numero_de_tiros) tiros2.append(secuencia_de_tiros2) tiros_con_dado_1 = 0 for tiro in tiros: if 6 in tiro: tiros_con_1 += 1 tiros_con_dado_2 = 0 for tiro2 in tiros2: if 6 in tiro2: tiros_con_1 += 1 probabilidad_tiros_con_1 = tiros_con_dado_1 / numero_de_intentos * tiros_con_dado_2 /numero_de_intentos print(f'Probabilidad de obtener por lo menos un 12 en {numero_de_tiros} tiros = {probabilidad_tiros_con_1}') if __name__ == '__main__': numero_de_tiros = int(input('Cuantos tiros del dado: ')) numero_de_intentos = int(input('Cuantos veces correra la simulación: ')) main(numero_de_tiros, numero_de_intentos)
Diego Alejandro Muñoz Camayo
Tuve que cambiar la estructura del código por que la función tirar dado esta mal diseñada, si realizas un print a "tiros" y "tiros2" encuentras los errores que hablo, yo lo estructure así:
import random def tirar_dado(numero_de_tiros): secuencia_de_tiros = [] for _ in range(numero_de_tiros): tiro = random.randint(1, 6) secuencia_de_tiros.append(tiro) return secuencia_de_tiros def tirar_dado2(numero_de_tiros): secuencia_de_tiros2 = [] for _ in range(numero_de_tiros): tiro2 = random.randint(1, 6) secuencia_de_tiros2.append(tiro2) return secuencia_de_tiros2 def main(numero_de_tiros, numero_de_intentos): tiros = [] tiros2 = [] sumatiros = [] for _ in range(numero_de_intentos): secuencia_de_tiros = tirar_dado(numero_de_tiros) tiros.append(secuencia_de_tiros) for _ in range(numero_de_intentos): secuencia_de_tiros2 = tirar_dado2(numero_de_tiros) tiros2.append(secuencia_de_tiros2) print(f'El tiro 1 es {tiros}') print(f'El tiro 2 es {tiros2}') #sumar las listas for i in range(len(tiros)): sumatiros.append(tiros[i] + tiros2[i]) print(sumatiros) tiros_con_1 = 0 for tiro in sumatiros: if 12 in tiro: tiros_con_1 += 1 print(tiros_con_1) probabilidad_tiros_con_1 = tiros_con_1 / numero_de_intentos print(f'Probabilidad de obtener por lo menos un 6 en {numero_de_tiros} tiros = {probabilidad_tiros_con_1}') if __name__ == '__main__': numero_de_tiros = int(input('Cuantas tiros del dado: ')) numero_de_intentos = int(input('Cuantas veces correra la simulacion: ')) main(numero_de_tiros, numero_de_intentos)
Sin embargo, aún tengo un error y es que al momento de sumar los valores de las listas se concatenan, estoy pensando como solucionarlo.
Saludos

Hans Garibaldi
A mí me sucede lo mismo, ¿lo resolviste?

Sebastián Andrade
He mirado un poco el codigo y lo qque creo que pasa es que la lista tiros esta en si llena de otras listas que son secuencias de tiros entonces revisa los bucles en los cuales iteras por ellas a ver
Diego Alejandro Muñoz Camayo
Hola muchas gracias no había notado ese error, aunque la probabilidad sigue arrojando 0.0, puse un round y dividí las operaciones pero el error persiste
import random def tirar_dado(numero_de_tiros): secuencia_de_tiros = [] secuencia_de_tiros2 = [] for _ in range(numero_de_tiros): tiro = random.choice([1, 2, 3, 4, 5, 6]) tiro2 = random.choice([1, 2, 3, 4, 5, 6]) secuencia_de_tiros.append(tiro) secuencia_de_tiros2.append(tiro2) return secuencia_de_tiros, secuencia_de_tiros2 def main(numero_de_tiros, numero_de_intentos): tiros = [] tiros2 = [] for _ in range(numero_de_intentos): secuencia_de_tiros = tirar_dado(numero_de_tiros) tiros.append(secuencia_de_tiros) secuencia_de_tiros2 = tirar_dado(numero_de_tiros) tiros2.append(secuencia_de_tiros2) tiros_con_dado_1 = 0 for tiro in tiros: if 6 in tiro: tiros_con_dado_1 += 1 tiros_con_dado_2 = 0 for tiro2 in tiros2: if 6 in tiro2: tiros_con_dado_2 += 1 probabilidad_tiros_con_1 = round(tiros_con_dado_1 / numero_de_intentos, 5) probabilidad_tiros_con_2 = round(tiros_con_dado_2 /numero_de_intentos,5) probabilidad_final = round(probabilidad_tiros_con_1 * probabilidad_tiros_con_2, 5) print(f'Probabilidad de obtener por lo menos un 12 en {numero_de_tiros} tiros = {probabilidad_final}') if __name__ == '__main__': numero_de_tiros = int(input('Cuantos tiros del dado: ')) numero_de_intentos = int(input('Cuantos veces correra la simulación: ')) main(numero_de_tiros, numero_de_intentos)

Sebastián Andrade
haya **

Sebastián Andrade
Hola diego, creo que tu problema esta aqui
tiros_con_dado_1 = 0 for tiro in tiros: if6in tiro: tiros_con_1 += 1 tiros_con_dado_2 = 0 for tiro2 in tiros2: if6in tiro2: tiros_con_1 += 1
corrigelo de la siguiente manera, tienes un problema con las variables
tiros_con_dado_1 = 0 for tiro in tiros: if6in tiro: tiros_con_dado_1 += 1 tiros_con_dado_2 = 0 for tiro2 in tiros2: if6in tiro2: tiros_con_dado_2 += 1
Si te fijas pusiste "tiros_con_1" y el nombre de la variable era "tiros_con_dado_1"
espero ese halla sido el problema y haberte ayudado