El Blog de Gualtrysoft

Windows 2000/2003/2008, Active Directory, VBScript, Hyper-V, PowerShell y todo aquello interesante a la hora de usar, configurar y administrar Windows Server. También tenemos longanizas…

Función Powershell para generar apuestas de lotería primitiva

Posted by urpiano en Miércoles 5 \05\UTC mayo \05\UTC 2010

Sí, has leído bien. Esta función de Powershell genera apuestas de Loteria Primitiva de forma aleatoria. Se le puede pasar el número de apuestas que se quiere generar o no pasarle nada, en cuyo caso sólo genera una combinación.

En realidad, no se trata nada más que de un ejercicio de manejo de arrays, que se me ocurrió preparando un curso sobre Powershell que tengo que impartir en la empresa. Este es el código del script:

Function Get-Primitiva($Apuestas = 1)
{
#.Synopsis
#    Genera apuestas de lotería primitiva
#.Description
#    Esta función genera apuestas de lotería primitiva
#.Parameter Apuestas
#    Define las apuestas que se generarán
#.Example
#        Get-Primitiva
#    Genera una apuesta
#.Example
#        Get-Primitiva 5
#    Genera 5 apuestas

    # Creamos un objeto Random con Seed Automática
    $Random = New-Object System.Random
    
    # En este bucle se darán tantos ciclos como apuestas a generar
    For($Apuesta = 0;$Apuesta -lt $Apuestas; $Apuesta++)
    {
        # Iniciamos el Array que tendrá los números de la combinación
        $Combinacion = @()

        # En este bucle For se irán generando números aleatorios entre 1 y 49
        # No hay ningún tipo de variable de control del bucle, pues no sabemos
        # cuantas vueltas se darán, ya que se deben conseguir 6 números no
        # repetidos
        For()
        {
            # Almacenamos en $a el número generado en este ciclo del bucle For
            $a = $Random.Next(1,49)

            # Agregamos el número generado si no estaba ya en el array
            If($Combinacion -notcontains $a){$Combinacion += "{0:D2}" -f $a}

            # En el caso de que el array tenga seis elementos salimos del bucle
            If($Combinacion.Count -eq 6){Break}
        }
        # Ordenamos el array
        [array]::Sort($Combinacion)

        # Mostramos la apuesta generada
        "$($Apuesta + 1)ª Combinación`: $($Combinacion[0..5])"
    }
}

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

 
A %d blogueros les gusta esto: