Colabora |
Combinaciones[Generación de combinaciones en .NET]
Fecha: 15/Dic/2008 (14-12-08)
|
IntroducciónEl uso de combinaciones es un tema muy utilizado en la probabilidad y en los juegos de azar como la lotería, sin embargo la generación de estas combinaciones puede ser un tema difícil de entender y aplicar.
Combinaciones
Las combinaciones son un arreglo
de objetos sin importar el orden, es decir, si un arreglo ya salio no
puede volver a salir en cualquier otro orden. Las combinaciones se definen
de un conjunto de N elementos tomados de r en r. Aquí la formula general.
Este teorema también puede establecerse como sigue: Ejemplo:
El código:Aquí una función recursiva que genera todas las posibles combinaciones. Código en C#: /// <summary> /// Funcion recursiva que genera combinaciones de números de N en r /// </summary> /// <param name=t">Inicialmente se debe de pasar 1 y este automaticamente se va incrementando</param>" /// <param name=N">Es el numero de elementos del Universo</param>" /// <param name=r">Es el numero de elementos del grupo</param>" /// <param name=x">Se utiliza para ir calculando en que numero de elemento vamos</param>" /// <param name=Elem">Arreglo que contiene la colección de elementos de la combinación</param>" /// <param name=strTex">Variable de texto donde se van mostrando las posibles combinaciones</param>" void Ciclo(int t, int N, int r, int x, ref int[] Elem, ref string strTex) { // Se repite hasta que t sea mayor que el número de formas posibles while (t <= (N - (r - x))) { // Se generaran r ciclos recursivos if (r > x) { Elem[x-1] = t; Ciclo((t + 1), N, r, (x + 1), ref Elem, ref strTex); } else { Elem[x-1] = t; Forma en que se manda a llamar la función. Código en C#: // Declaramos variables int N = 9; // Nueve envases int r = 6; // Seis espacios int[] Elem = new int[r]; // Vector de la Combinación string strTex = ""; // Iniciamos llamada recursiva a la función. Ciclo(1, N, r, 1, ref Elem, ref strTex); // Mostrar resultado en una caja de texto txtCombina.Text = strTex;
|
Lo comentado en este artículo está probado (y funciona) con la siguiente configuración:
El autor se compromete personalmente de que lo expuesto en este artículo es cierto y lo ha comprobado usando la configuración indicada anteriormente.
En cualquier caso, el Guille no se responsabiliza del contenido de este artículo.
Si encuentras alguna errata o fallo en algún link (enlace), por favor comunícalo usando este link:
Gracias.
Código de ejemplo (comprimido): |
Este artículo no tiene ningún código de ejemplo
|