Combinaciones posibles de 5 números del 1 al 50

Resuelto
PrivatD -  
 PrivatD -

Hola,

Me gustaría probar una idea que me ha estado inquietando desde hace un tiempo.

Se trata de la Euromillones, lo habrán adivinado.

Me gustaría recibir ayuda para listar en Excel todas las combinaciones posibles de 5 números del 1 al 50.

Cualquier ayuda será apreciada

5 réponses

Pierr10 Mensajes publicados 13775 Fecha de registro   Estado Modérateur Última intervención   5 810
 

Hola,

Efectivamente, es una combinación en el sentido matemático del término.
La cantidad de estas combinaciones es (50*49*48*47*46)/(5*4*3*2), lo que hace:
2 118 760 combinaciones posibles.

¡Va a hacer falta muchas líneas en su tabla de Excel!


Lo que se concibe bien se enuncia claramente,
Y las palabras para decirlo llegan fácilmente.
(Boileau)
1
Usuario anónimo
 

Hola,

Primero, te llamo la atención sobre las limitaciones de excel. Por lo tanto, no podrás hacerlo en una sola columna. Luego, un poco de lectura


Cuando era pequeño, el Mar Muerto solo estaba enfermo.
George Burns

1
PrivatD
 

Gracias por la respuesta

0
mamiemando Mensajes publicados 33537 Fecha de registro   Estado Modérateur Última intervención   7 927
 

Hola,

La pregunta que todo el mundo puede preguntarse naturalmente es cuál es el interés de listar todas las combinaciones. Por ejemplo, si el objetivo es almacenar todas las combinaciones que ya han tenido lugar, no es necesario enumerarlas todas, solo las que han sucedido son relevantes.

De hecho, desde el punto de vista de las matemáticas, no porque una combinación ya se haya realizado significa que tenga más o menos probabilidades de realizarse en el futuro. Hablamos de sorteos independientes. En otras palabras, mantener tales estadísticas no tiene un interés práctico real.

Enumeración

Si a pesar de todo quieres enumerar todas estas combinaciones, como han subrayado las numerosas personas que ya han intervenido, Excel es bastante inadecuado para manejar tales volúmenes de datos. Un lenguaje como Python sería mucho más práctico, como muestra el siguiente ejemplo.

from itertools import combinations from pprint import pprint k = 5 # Longitud de las combinaciones n = 50 # Valor máximo de los números involucrados en las combinaciones c = list(combinations(list(range(1, n + 1)), k)) print(len(c)) # Muestra el número de combinaciones pprint(c[:10]) # Muestra las 10 primeras combinaciones

Resultado :

 2118760 [(1, 2, 3, 4, 5), (1, 2, 3, 4, 6), (1, 2, 3, 4, 7), (1, 2, 3, 4, 8), (1, 2, 3, 4, 9), (1, 2, 3, 4, 10), (1, 2, 3, 4, 11), (1, 2, 3, 4, 12), (1, 2, 3, 4, 13), (1, 2, 3, 4, 14)]

Conteo

En el caso de EuroMillions, el sorteo se hace sin reemplazo y, por lo tanto, solo nos interesan las combinaciones sin repeticiones, cuyo número se obtiene mediante esta fórmula (ver aquí) :

 K(n, k) = n! / (k! * (n - k)!)

con :

  • ! es el operador factorial;
  • n = 50 (ya que se elige entre 50 números distintos);
  • k = 5 (ya que cada combinación está compuesta por 5 números)

... lo que da el mismo resultado que el que Pierr10 calculó en el mensaje #1.

En Python :

from math import factorial def nc(n, k): return factorial(n) // (factorial(k) * factorial(n - k)) print(nc(50, 5)) # Muestra 2118760

... o más simplemente :

from math import comb print(comb(50, 5))

Buena suerte

1
PrivatD
 

Les agradezco

0
PrivatD
 

¡En efecto sí! Pero ahora, ¿cómo listar eso? ¡Esa es la cuestión!

0
brucine Mensajes publicados 24394 Fecha de registro   Estado Membre Última intervención   4 098
 

Hola,

La pregunta no tiene absolutamente ningún interés, como señala Pierr10, vamos a colapsar Excel y nuestro PC al querer generar y mostrar esta lista que de todas formas no podrá ser consultada fácilmente ni servir como base de datos fácilmente explotable para un tratamiento numérico debido a su tamaño.

Sería tratada más "naturalmente" por un lenguaje de programación, pero siempre que el resultado esperado sea bajo (lo que, en materia de factoriales, sigue siendo bastante teórico), se encuentra, por ejemplo, tratada aquí en Python o aquí en otros lenguajes.

Si realmente se quiere en Excel, nada es más indispensable que lo que es innecesario, existen diferentes enfoques en VBA como aquí o sin él como allí.

0
yg_be Mensajes publicados 23437 Fecha de registro   Estado Contributeur Última intervención   1 587
 

Hola, dado que hay que encontrar 5 números, me parece mucho más simple y rápido trabajar con 5 bucles anidados.

 Option Explicit Private Sub cc() Dim i1 As Integer, i2 As Integer, i3 As Integer, i4 As Integer, i5 As Integer Dim c As Long, n As Integer Dim r As Long, col As Integer c = 0 n = 50 r = 2 col = 1 Debug.Print Now, n For i1 = 1 To n For i2 = i1 + 1 To n For i3 = i2 + 1 To n For i4 = i3 + 1 To n For i5 = i4 + 1 To n c = c + 1 Cells(r, col) = i1 Cells(r, col + 1) = i2 Cells(r, col + 2) = i3 Cells(r, col + 3) = i4 Cells(r, col + 4) = i5 col = col + 6 If col = 25 Then col = 1 r = r + 1 End If Next i5 Next i4 Next i3 Next i2 Next i1 Debug.Print Now, c End Sub 
1
jordane45 Mensajes publicados 30426 Fecha de registro   Estado Modérateur Última intervención   4 830 > yg_be Mensajes publicados 23437 Fecha de registro   Estado Contributeur Última intervención  
 

Hola Hay que pensar que se deben encontrar las combinaciones sin duplicados. Y sin reintegros. Por ejemplo: 1,2,3,4,5. Es lo mismo que 5,3,4,2,1

2
yg_be Mensajes publicados 23437 Fecha de registro   Estado Contributeur Última intervención   1 587 > jordane45 Mensajes publicados 30426 Fecha de registro   Estado Modérateur Última intervención  
 

Sí, afortunadamente, no estamos obligados a usar constantes como límites del bucle.

0
PrivatD > yg_be Mensajes publicados 23437 Fecha de registro   Estado Contributeur Última intervención  
 

Gracias, tomo nota

1