Compartir a través de


Get-Random

Obtiene un número aleatorio o selecciona objetos aleatoriamente de una colección.

Sintaxis

RandomNumberParameterSet (Es el valor predeterminado).

Get-Random
    [[-Maximum] <Object>]
    [-SetSeed <Int32>]
    [-Minimum <Object>]
    [-Count <Int32>]
    [<CommonParameters>]

RandomListItemParameterSet

Get-Random
    [-InputObject] <Object[]>
    [-SetSeed <Int32>]
    [-Count <Int32>]
    [<CommonParameters>]

ShuffleParameterSet

Get-Random
    [-InputObject] <Object[]>
    [-SetSeed <Int32>]
    [-Shuffle]
    [<CommonParameters>]

Description

El cmdlet Get-Random 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 ni entrada, un comando Get-Random 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 de Get-Random posteriores 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.

Establecer deliberadamente el valor de inicialización da como resultado un comportamiento repetible no aleatorio. Solo se debe usar al intentar reproducir el comportamiento, como al depurar o analizar un script que incluya comandos Get-Random. 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, lo que garantiza la aleatoriedad criptográficamente segura.

Ejemplos

Ejemplo 1: Obtener un entero aleatorio

Este comando obtiene un entero aleatorio entre 0 (cero) y 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 de 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: Obtención de 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 usar el parámetro SetSeed.

Dado que SetSeed produce un comportamiento no aleatorio, normalmente se usa solo para reproducir los 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 un ejemplo seleccionado aleatoriamente de 50 archivos de la unidad C: del equipo local.

$Files = Get-ChildItem -Path C:\* -Recurse
$Sample = $Files | Get-Random -Count 50

Ejemplo 11: Tirar dados justos

En este ejemplo se implementa una serie de die die 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 tienen el formato de 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 de sin canalizar objetos para Get-Random. En el ejemplo siguiente se obtienen tres números aleatorios inferiores a 10.

Get-Random -Count 3 -Maximum 10
9
0
8

Ejemplo 13: Uso del 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 devuelve a, cadena vacía o $null. La cadena vacía 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.

Propiedades del parámetro

Tipo:Int32
Valor predeterminado:None
Admite caracteres comodín:False
DontShow:False

Conjuntos de parámetros

RandomNumberParameterSet
Posición:Named
Mandatory:False
Valor de la canalización:False
Valor de la canalización por nombre de propiedad:False
Valor de los argumentos restantes:False
RandomListItemParameterSet
Posición:Named
Mandatory:False
Valor de la canalización:False
Valor de la canalización por nombre de propiedad:False
Valor de los argumentos restantes: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. Escriba los objetos , una variable que contiene los objetos o un comando o expresión que obtiene los objetos. También puede canalizar una colección de objetos para 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.

Propiedades del parámetro

Tipo:

Object[]

Valor predeterminado:None
Admite caracteres comodín:False
DontShow:False

Conjuntos de parámetros

RandomListItemParameterSet
Posición:0
Mandatory:True
Valor de la canalización:True
Valor de la canalización por nombre de propiedad:False
Valor de los argumentos restantes:False
ShuffleParameterSet
Posición:0
Mandatory:True
Valor de la canalización:True
Valor de la canalización por nombre de propiedad:False
Valor de los argumentos restantes: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 Máximo debe ser mayor que (no igual a) el valor de Mínimo. 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 Mínimo es un entero de 32 bits, el valor predeterminado de Maximum es Int32.MaxValue.

Si el valor de Mínimo es un doble (un número de punto flotante), el valor predeterminado de Máximo es Double.MaxValue. De lo contrario, el valor predeterminado es Int32.MaxValue.

Propiedades del parámetro

Tipo:Object
Valor predeterminado:None
Admite caracteres comodín:False
DontShow:False

Conjuntos de parámetros

RandomNumberParameterSet
Posición:0
Mandatory:False
Valor de la canalización:False
Valor de la canalización por nombre de propiedad:False
Valor de los argumentos restantes: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 Mínimo debe ser menor que (no igual que) el valor de Máximo. 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.

Propiedades del parámetro

Tipo:Object
Valor predeterminado:None
Admite caracteres comodín:False
DontShow:False

Conjuntos de parámetros

RandomNumberParameterSet
Posición:Named
Mandatory:False
Valor de la canalización:False
Valor de la canalización por nombre de propiedad:False
Valor de los argumentos restantes: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 es criptográficomente seguro.

Precaución

Establecer el valor de 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 comandos Get-Random.

Este valor de inicialización se usa para el comando actual y para todos los comandos de Get-Random posteriores 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.

Propiedades del parámetro

Tipo:

Nullable<T>[Int32]

Valor predeterminado:None
Admite caracteres comodín:False
DontShow:False

Conjuntos de parámetros

(All)
Posición:Named
Mandatory:False
Valor de la canalización:False
Valor de la canalización por nombre de propiedad:False
Valor de los argumentos restantes:False

-Shuffle

Devuelve toda la colección en un orden aleatorio.

Propiedades del parámetro

Tipo:SwitchParameter
Valor predeterminado:None
Admite caracteres comodín:False
DontShow:False

Conjuntos de parámetros

ShuffleParameterSet
Posición:Named
Mandatory:True
Valor de la canalización:False
Valor de la canalización por nombre de propiedad:False
Valor de los argumentos restantes:False

CommonParameters

Este cmdlet admite los parámetros comunes: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction y -WarningVariable. Para obtener más información, vea about_CommonParameters.

Entradas

Object

Puede canalizar cualquier objeto a este cmdlet. Selecciona los valores aleatoriamente de los objetos canalizado.

Salidas

Int32

Int64

Double

PSObject

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 para 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
Soltero 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 RandomListItemParameter Set acepta matrices que contienen una cadena vacía o $null. En versiones anteriores de PowerShell, solo el parámetro Maximum del RandomNumberParameterSet conjunto de parámetros aceptó una cadena vacía o $null.