Get-Random
Obtiene un número aleatorio o selecciona aleatoriamente los objetos de una colección.
Syntax
Get-Random
[-SetSeed <Int32>]
[[-Maximum] <Object>]
[-Minimum <Object>]
[-Count <Int32>]
[<CommonParameters>]
Get-Random
[-SetSeed <Int32>]
[-InputObject] <Object[]>
[-Count <Int32>]
[<CommonParameters>]
Get-Random
[-SetSeed <Int32>]
[-InputObject] <Object[]>
[-Shuffle]
[<CommonParameters>]
Description
El Get-Random
cmdlet obtiene un número seleccionado aleatoriamente. Si envía una colección de objetos a Get-Random
, obtiene uno o varios objetos seleccionados aleatoriamente de la colección.
Sin parámetros o entrada, un Get-Random
comando devuelve un entero de 32 bits sin signo seleccionado aleatoriamente entre 0 (cero) y [int32]::MaxValue
.
Puede usar los parámetros de Get-Random
para especificar los valores mínimo y máximo, el número de objetos devueltos de una colección o un número de inicialización.
Precaución
Get-Random
no garantiza la aleatoriedad criptográficamente segura. El valor de inicialización se usa para el comando actual y para todos los comandos posteriores Get-Random
de la sesión actual hasta que use SetSeed de nuevo o cierre la sesión. No se puede restablecer el valor de inicialización a su valor predeterminado.
Establecer deliberadamente el valor de inicialización da como resultado un comportamiento no aleatorio y repetible. Solo se debe usar al intentar reproducir el comportamiento, como al depurar o analizar un script que incluya Get-Random
comandos. Tenga en cuenta que el valor de inicialización podría establecerse mediante otro código de la misma sesión, como un módulo importado.
PowerShell 7.4 incluye Get-SecureRandom
, que garantiza la aleatoriedad criptográficamente segura.
Ejemplos
Ejemplo 1: Obtener un entero aleatorio
Este comando obtiene un entero aleatorio entre 0 (cero) e Int32.MaxValue.
Get-Random
3951433
Ejemplo 2: Obtener un entero aleatorio entre 0 y 99
Get-Random -Maximum 100
47
Ejemplo 3: Obtener un entero aleatorio entre -100 y 99
Get-Random -Minimum -100 -Maximum 100
56
Ejemplo 4: Obtener un número de punto flotante aleatorio
Este comando obtiene un número de punto flotante aleatorio mayor o igual que 10,7 y menor que 20,93.
Get-Random -Minimum 10.7 -Maximum 20.93
18.08467273887
Ejemplo 5: Obtener un entero aleatorio de una matriz
Este comando obtiene un número seleccionado aleatoriamente en la matriz especificada.
1, 2, 3, 5, 8, 13 | Get-Random
8
Ejemplo 6: Obtener varios enteros aleatorios de una matriz
Este comando obtiene tres números seleccionados aleatoriamente en orden aleatorio de una matriz.
1, 2, 3, 5, 8, 13 | Get-Random -Count 3
3
1
13
Ejemplo 7: Aleatorizar una colección completa
A partir de PowerShell 7.1, puede usar el parámetro Shuffle para devolver toda la colección en un orden aleatorio.
1, 2, 3, 5, 8, 13 | Get-Random -Shuffle
2
3
5
1
8
13
Ejemplo 8: Obtener un valor no numérico aleatorio
Este comando devuelve un valor aleatorio de una colección no numérica.
"red", "yellow", "blue" | Get-Random
yellow
Ejemplo 9: Uso del parámetro SetSeed
En este ejemplo se muestra el efecto de utilizar el parámetro SetSeed.
Dado que SetSeed genera un comportamiento no aleatorio, normalmente se usa solo para reproducir resultados, como al depurar o analizar un script.
# Commands with the default seed are pseudorandom
Get-Random -Maximum 100 -SetSeed 23
Get-Random -Maximum 100
Get-Random -Maximum 100
Get-Random -Maximum 100
32
25
93
95
# Commands with the same seed aren't random
Get-Random -Maximum 100 -SetSeed 23
Get-Random -Maximum 100 -SetSeed 23
Get-Random -Maximum 100 -SetSeed 23
32
32
32
# SetSeed results in a repeatable series
Get-Random -Maximum 100 -SetSeed 23
Get-Random -Maximum 100
Get-Random -Maximum 100
Get-Random -Maximum 100
32
25
93
95
Ejemplo 10: Obtener archivos aleatorios
Estos comandos obtienen una muestra seleccionada aleatoriamente de 50 archivos de la C:
unidad del equipo local.
$Files = Get-ChildItem -Path C:\* -Recurse
$Sample = $Files | Get-Random -Count 50
Ejemplo 11: Tirar dados de feria
En este ejemplo se implementa un dado justo 1200 veces y se cuentan los resultados. El primer comando ForEach-Object
, repite la llamada a Get-Random
desde la canalización en números (1-6). Los resultados se agrupan por su valor con Group-Object
y con formato como una tabla con Select-Object
.
1..1200 | ForEach-Object {
1..6 | Get-Random
} | Group-Object | Select-Object Name,Count
Name Count
---- -----
1 206
2 199
3 196
4 226
5 185
6 188
Ejemplo 12: Uso del parámetro Count
Ahora puede usar el parámetro Count sin canalizar objetos a Get-Random
.
En el ejemplo siguiente se obtienen tres números aleatorios menores que 10.
Get-Random -Count 3 -Maximum 10
9
0
8
Ejemplo 13: Usar el parámetro InputObject con una cadena vacía o $null
En este ejemplo, el parámetro InputObject especifica una matriz que contiene una cadena vacía (''
) y $null
.
Get-Random -InputObject @('a','',$null)
Get-Random
a
devuelve , cadena vacía o $null
. El sting vacío se muestra como una línea en blanco y $null
vuelve a un símbolo del sistema de PowerShell.
Parámetros
-Count
Especifica el número de objetos aleatorios que se van a devolver. El valor predeterminado es 1.
Cuando se usa con InputObject
que contiene una colección:
- Cada elemento seleccionado aleatoriamente solo se devuelve una vez.
- Si el valor de Count supera el número de objetos de la colección, todos los objetos de la colección se devuelven en orden aleatorio.
Type: | Int32 |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-InputObject
Especifica una colección de objetos. Get-Random
obtiene objetos seleccionados aleatoriamente en orden aleatorio de la colección hasta el número especificado por Count. Especifique los objetos, una variable que contenga los objetos o un comando o una expresión que obtenga los objetos. También puede canalizar una colección de objetos a Get-Random
.
A partir de PowerShell 7, el parámetro InputObject acepta matrices que pueden contener una cadena vacía o $null
. La matriz se puede enviar por la canalización o como un valor de parámetro InputObject .
Type: | Object[] |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-Maximum
Especifica un valor máximo para el número aleatorio. Get-Random
devuelve un valor menor que el máximo (no igual). Escriba un entero, un número de punto flotante de precisión doble o un objeto que se pueda convertir en un entero o double, como una cadena numérica ("100").
El valor de Maximum debe ser mayor que el valor de Minimum (no igual). Si el valor de Maximum o Minimum es un número de punto flotante, Get-Random
devuelve un número de punto flotante seleccionado aleatoriamente.
En un equipo de 64 bits, si el valor de Minimum es un entero de 32 bits, el valor predeterminado de Maximum es Int32.MaxValue.
Si el valor de Minimum es un valor double (un número de punto flotante), el valor predeterminado de Maximum es Double.MaxValue. De lo contrario, el valor predeterminado es Int32.MaxValue.
Type: | Object |
Position: | 0 |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Minimum
Especifica un valor mínimo para el número aleatorio. Escriba un entero, un número de punto flotante de precisión doble o un objeto que se pueda convertir en un entero o double, como una cadena numérica ("100"). El valor predeterminado es 0 (cero).
El valor de Minimum debe ser menor que el valor de Maximum (no igual). Si el valor de Maximum o Minimum es un número de punto flotante, Get-Random
devuelve un número de punto flotante seleccionado aleatoriamente.
Type: | Object |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-SetSeed
Especifica un valor de inicialización para el generador de números aleatorios. Cuando se usa SetSeed, el cmdlet genera números pseudoaleatorios, que no son criptográficomente seguros.
Precaución
Establecer la inicialización da como resultado un comportamiento no aleatorio. Solo se debe usar al intentar reproducir el comportamiento, como al depurar o analizar un script que incluya Get-Random
comandos.
Este valor de inicialización se usa para el comando actual y para todos los comandos posteriores Get-Random
de la sesión actual hasta que use SetSeed de nuevo o cierre la sesión. No se puede restablecer la inicialización a su valor predeterminado.
Type: | Nullable<T>[Int32] |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Shuffle
Devuelve toda la colección en un orden aleatorio.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Entradas
Puede canalizar cualquier objeto a este cmdlet. Selecciona los valores aleatoriamente de los objetos canalados.
Salidas
Este cmdlet devuelve un número entero o de punto flotante, o un objeto seleccionado aleatoriamente de una colección enviada.
Notas
Get-Random
no siempre devuelve el mismo tipo de datos que el valor de entrada. En la tabla siguiente se muestra el tipo de salida de cada uno de los tipos de entrada numéricos.
Tipo de entrada | Tipo de salida |
---|---|
SByte | Double |
Byte | Double |
Int16 | Double |
UInt16 | Double |
Int32 | Int32 |
UInt32 | Double |
Int64 | Int64 |
UInt64 | Double |
Double | Double |
Single | Double |
A partir de Windows PowerShell 3.0, Get-Random
admite enteros de 64 bits. En Windows PowerShell 2.0, todos los valores se convierten en System.Int32.
A partir de PowerShell 7, el parámetro InputObject del conjunto de parámetros RandomListItemParameterSet acepta matrices que contienen una cadena vacía o $null
. En versiones anteriores de PowerShell, solo el parámetro Maximum del conjunto de parámetros RandomNumberParameterSet aceptaba una cadena vacía o $null
.