Python - probabilidad de dados con python

 
Vista:

probabilidad de dados con python

Publicado por brian (1 intervención) el 09/11/2021 16:37:56
Hola queria saber porque mi codigo para obtener la cantidad de casos favorables a que la suma de dados sea igual a 10 me da siempre como resultado 0

"""
Desarrollar un programa que calcule cuantas formas existen para lograr un total de 10 entre tres dados. Luego calcule la probabilidad de
tirar un diez con precisión a tres lugares
"""

cara=[1,2,3,4,5,6]
total_casos = 6 ** 3
sum = 10
casos_a_favor=0
caso=0
for i in range(6,1,1):
j=1
caso = cara[i]+j
if caso == sum :
casos_a_favor += 1
else : j+1
print(casos_a_favor)
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

probabilidad de dados con python

Publicado por grayTurtle01 (3 intervenciones) el 09/11/2021 18:27:35

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
cara=[1,2,3,4,5,6]
total_casos = 6 ** 3
sum = 10
casos_a_favor=0
caso=0
 
for i in range(1,7):
  for j in range(1,7):
    for k in range(1,7):
      if i + j + k == sum:
        casos_a_favor += 1
 
print(casos_a_favor)
 
probabiidad = 1.0*casos_a_favor/total_casos
print(probabiidad)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Luis
Val: 9
Ha disminuido su posición en 8 puestos en Python (en relación al último mes)
Gráfica de Python

probabilidad de dados con python

Publicado por Luis (15 intervenciones) el 23/11/2021 20:10:03
Más que una cuestión python me parece un problema de combinatoria.
Las formas de obtener una suma de 10 con tres dados serían:
(9,1) -> (6,3,1), (5,4,1)
(8,2) -> (4,4,2), (5,3,2), (6,2,2)
(7,3) -> (4,3,3), (5,2,3), (6,1,3)
(6,4) -> (3,3,4), (4,2,4), (5,1,4)
(5,5) -> (3,2,5), (4,1,5)
Que son un total de 13 casos favorables
Los casos posibles serían el total de combinaciones con repetición de 6 elementos tomados 3 a 3:
CR(m,n) = (m+n-1)!/(n!*(m-1)!)
donde:
m = 6
n = 3
1
2
3
4
5
6
7
8
from math import factorial
m, n = 6, 3
#Casos favorables:
cf = 13
# Casos posibles:
cp = factorial(m+n-1)/(factorial(n)*factorial(m-1))
p = cf / cp
print(p, round(p,3))
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Luis
Val: 9
Ha disminuido su posición en 8 puestos en Python (en relación al último mes)
Gráfica de Python

probabilidad de dados con python

Publicado por Luis (15 intervenciones) el 23/11/2021 20:46:05
En mi anterior comentario hay un error, en lugar de 13 casos favorables hay 6, pues hay repeticiones.
Dicho esto, habría otra forma de resolverlo:

1
2
3
4
5
6
7
8
9
10
11
12
cf, cp = [], []
for n1 in range(1,7):
    for n2 in range(1,7):
        for n3 in range(1,7):
            # Casos favorables, cf (suman 10)
            if n1+n2+n3 == 10 and sorted((n1,n2,n3)) not in cf:
                cf.append(sorted((n1,n2,n3)))
            # Casos posibles, cp
            if sorted((n1,n2,n3)) not in cp:
                cp.append(sorted((n1,n2,n3)))
print(f'p(10) = {len(cf)/len(cp)}')
print(f'casos posibles = {cp} \ncasos favorables = {cf}')
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar