Archivos mensuales: enero 2013

definir funcion para obtener un numero aleatorio real con powershell

Lo prometido es deuda, a si que voy a contaros como definir una función en powershell que obtenga un número aleatorio que tenga en cuenta el valor máximo en el cálculo del mismo.

Si no sabés de que estoy hablando, podéis leeros la entrada anterior donde hablaba de Get-Random.

Este es el código de la función que he llamado Get-RealRandom:
Get-RealRandom
Como véis la función tiene definidos dos parámetros (ninguno de los dos son obligatorios) llamados -Max y -Min. Lo que hace el cuerpo de esta función es dependiendo de los parámetros que reciba llama a la función original Get-Random pero corrigiendo el valor del parámetro -Max para obtener un resultado dentro del rango deseado.

De esta forma, una vez tengamos cargada esta función en memoria podemos usarla de las siguientes maneras:

Get-RealRandom 10
Este comando obtendrá un número entre 0 y 10

Get-RealRandom 10 -Min 3
Este comando obtendrá un número entre 3 y 10


Si tenéis cualquier duda, escribir un comentario, os responderé lo antes posible.

obtener un numero aleatorio con powershell

Esta entrada tiene dos objetivos, el primero aprender a obtener un número aleatorio con powershell y el segundo advertiros del funcionamiento real de la función que nos ayuda a obtenerlo.

La función que ofrece powershell para obtener un resultado aleatorio (antes he dicho un número, pero realmente no es así, después me explico) es Get-Random.
Esta función acepta principalmente dos parámetros -Maximum y -Minimum. Os pongo algunos ejemplos de uso de esta función:

Get-Random 10
Este comando obtendrá un número entre 0 y 9

Get-Random 10 -Minimum 3
Este comando obtendrá un número entre 3 y 9

5 | Get-Random
Este comando obtendrá un número entre 0 y 4

Como podéis ver en los ejemplos el valor máximo que le indicamos a la función no será incluido en el cálculo del número aleatorio (esto es lo que quería mostraros). De esta forma, para evitar que nos confundamos, podemos tomar dos alternativas:

1) Usar la función indicando de manera visual el número que queremos usar de límite:

Get-Random (10+1) -Minimum 2


De esta forma visualmente vemos que estamos obteniendo un número entre 2 y 10.

2) Definir una función Get-RealRandom que obtenga un número aleatorio teniendo en cuenta el valor que digamos como valor máximo en el cálculo y se usaría así:

Get-RealRandom -Maximum 10 -Minimum 2


Con esta función estamos obteniendo un número entre 2 y 10.

Por último, como comenté al principio del post, en realidad Get-Random no sólo obtiene un número aleatorio, sino que también puede obtener un objeto aleatorio de una lista de objetos. Es decir, que podemos hacer cosas como lo siguiente:

"pepe", "luis", "angel" | Get-Random
Este comando devolverá uno de los 3 strings pasados por el pipeline

"pepe", 3, "angel" | Get-Random
Este comando va un poco más lejos y devolverá uno de los elementos pasados por el pipeline, en este caso son 2 strings y un integer

Get-Process | Get-Random
Este comando devolverá un proceso del sistema de manera aleatoria

Como véis la potencia que ofrece está función es realmente interesante y puede ser muy útil.

Si queréis podéis echar un ojo al código de la función que he definido como Get-RealRandom.