Share via


Get-Random

Obtém um número aleatório ou seleciona objetos aleatoriamente de uma coleção.

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

O Get-Random cmdlet obtém um número selecionado aleatoriamente. Se você enviar uma coleção de objetos para Get-Random, ele obterá um ou mais objetos selecionados aleatoriamente da coleção.

Sem parâmetros ou entrada, um Get-Random comando retorna um inteiro sem sinal de 32 bits selecionado aleatoriamente entre 0 (zero) e Int32.MaxValue (0x7FFFFFFF, 2,147,483,647).

Por padrão, Get-Random gera aleatoriedade criptograficamente segura usando a classe RandomNumberGenerator .

Você pode usar os parâmetros de Get-Random para especificar os valores mínimo e máximo, o número de objetos retornados de uma coleção ou um número de semente.

Cuidado

Definir a semente deliberadamente resulta em um comportamento não aleatório e repetível. Ele só deve ser usado ao tentar reproduzir o comportamento, como ao depurar ou analisar um script que inclua Get-Random comandos.

Esse valor de semente é usado para o comando atual e para todos os comandos subsequentes Get-Random na sessão atual até que você use SetSeed novamente ou feche a sessão. Você não pode redefinir a semente para seu valor padrão.

Exemplos

Exemplo 1: Obter um inteiro aleatório

Esse comando obtém um inteiro aleatório entre 0 (zero) e Int32.MaxValue.

Get-Random

3951433

Exemplo 2: Obter um inteiro aleatório entre 0 e 99

Get-Random -Maximum 100

47

Exemplo 3: Obter um inteiro aleatório entre -100 e 99

Get-Random -Minimum -100 -Maximum 100

56

Exemplo 4: Obter um número de ponto flutuante aleatório

Esse comando obtém um número de ponto flutuante aleatório maior ou igual a 10.7 e menor que 20.92.

Get-Random -Minimum 10.7 -Maximum 20.93

18.08467273887

Exemplo 5: Obter um inteiro aleatório de uma matriz

Esse comando obtém um número selecionado aleatoriamente da matriz especificada.

1, 2, 3, 5, 8, 13 | Get-Random

8

Exemplo 6: Obter vários inteiros aleatórios de uma matriz

Esse comando obtém três números selecionados aleatoriamente em ordem aleatória de uma matriz.

1, 2, 3, 5, 8, 13 | Get-Random -Count 3

3
1
13

Exemplo 7: Randomizar uma coleção inteira

A partir do PowerShell 7.1, você pode usar o parâmetro Shuffle para retornar toda a coleção em uma ordem aleatória.

1, 2, 3, 5, 8, 13 | Get-Random -Shuffle

2
3
5
1
8
13

Exemplo 8: Obter um valor não numérico aleatório

Esse comando retorna um valor aleatório de uma coleção não numérica.

"red", "yellow", "blue" | Get-Random

yellow

Exemplo 9: usar o parâmetro SetSeed

Este exemplo mostra o efeito do uso do parâmetro SetSeed.

Como o SetSeed produz um comportamento não aleatório, normalmente é usado apenas para reproduzir resultados, como ao depurar ou analisar um 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

74
56
84
46

# Commands with the same seed are not random
Get-Random -Maximum 100 -SetSeed 23
Get-Random -Maximum 100 -SetSeed 23
Get-Random -Maximum 100 -SetSeed 23

74
74
74

# SetSeed results in a repeatable series
Get-Random -Maximum 100 -SetSeed 23
Get-Random -Maximum 100
Get-Random -Maximum 100
Get-Random -Maximum 100

74
56
84
46

Exemplo 10: Obter arquivos aleatórios

Esses comandos obtêm um exemplo selecionado aleatoriamente de 50 arquivos da C: unidade do computador local.

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

Exemplo 11: Rolar dados justos

Este exemplo acumula uma morte justa 1200 vezes e conta os resultados. O primeiro comando ForEach-Object repete a chamada para Get-Random do canalizado em números (1-6). Os resultados são agrupados por seu valor com Group-Object e formatados como uma tabela com 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

Exemplo 12: usar o parâmetro Count

Agora você pode usar o parâmetro Count sem canalizar objetos para Get-Random. O exemplo a seguir obtém três números aleatórios menores que 10.

Get-Random -Count 3 -Maximum 10

9
0
8

Exemplo 13: usar o parâmetro InputObject com uma cadeia de caracteres vazia ou $null

Neste exemplo, o parâmetro InputObject especifica uma matriz que contém uma cadeia de caracteres vazia ('') e $null.

Get-Random -InputObject @('a','',$null)

Get-Random retornará a, cadeia de caracteres vazia ou $null. A picada vazia é exibida como uma linha em branco e $null retorna a um prompt do PowerShell.

Parâmetros

-Count

Especifica o número de objetos ou números aleatórios a serem retornados. O padrão é 1.

Quando usado com InputObject, se o valor de Count exceder o número de objetos na coleção, Get-Random retornará todos os objetos em ordem aleatória.

Type:Int32
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-InputObject

Especifica uma coleção de objetos. Get-Random obtém objetos selecionados aleatoriamente em ordem aleatória da coleção até o número especificado por Count. Insira os objetos, uma variável que contenha os objetos ou um comando ou expressão que os obtenha. Você também pode canalizar uma coleção de objetos para Get-Random.

A partir do PowerShell 7, o parâmetro InputObject aceita matrizes que podem conter uma cadeia de caracteres vazia ou $null. A matriz pode ser enviada pelo pipeline ou como um valor de parâmetro InputObject .

Type:Object[]
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-Maximum

Especifica um valor máximo para o número aleatório. Get-Random retorna um valor menor que o máximo (não igual). Insira um inteiro, um número de ponto flutuante de precisão dupla ou um objeto que pode ser convertido em um inteiro ou duplo, como uma cadeia de caracteres numérica ("100").

O valor de Maximum deve ser maior que (diferente de) o valor de Minimum. Se o valor de Máximo ou Mínimo for um número de ponto flutuante, Get-Random retornará um número de ponto flutuante selecionado aleatoriamente.

Em um computador de 64 bits, se o valor de Mínimo for um inteiro de 32 bits, o valor padrão de Maximum será Int32.MaxValue.

Se o valor de Mínimo for um duplo (um número de ponto flutuante), o valor padrão de Maximum será Double.MaxValue. Caso contrário, o valor padrão é Int32.MaxValue.

Type:Object
Position:0
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Minimum

Especifica um valor mínimo para o número aleatório. Insira um inteiro, um número de ponto flutuante de precisão dupla ou um objeto que pode ser convertido em um inteiro ou duplo, como uma cadeia de caracteres numérica ("100"). O valor padrão é 0 (zero).

O valor de Minimum deve ser menor que (diferente de) o valor de Maximum. Se o valor de Máximo ou Mínimo for um número de ponto flutuante, Get-Random retornará um número de ponto flutuante selecionado aleatoriamente.

Type:Object
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-SetSeed

Especifica um valor de semente para o número aleatório. Quando você usa SetSeed, o cmdlet usa o método System.Random para gerar números pseudorandom, o que não é criptograficamente seguro.

Cuidado

Definir a semente resulta em um comportamento não aleatório. Ele só deve ser usado ao tentar reproduzir o comportamento, como ao depurar ou analisar um script que inclui Get-Random comandos.

Esse valor de semente é usado para o comando atual e para todos os comandos subsequentes Get-Random na sessão atual até que você use SetSeed novamente ou feche a sessão. Você não pode redefinir a semente para seu valor padrão.

Type:Nullable<T>[Int32]
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Shuffle

Retorna toda a coleção em uma ordem aleatória.

Type:SwitchParameter
Position:Named
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

Entradas

Object

Você pode canalizar um ou mais objetos. Get-Random seleciona valores aleatoriamente dos objetos canalizados.

Saídas

System.Int32, System.Int64, System.Double

Get-Random retorna um número inteiro ou de ponto flutuante ou um objeto selecionado aleatoriamente de uma coleção enviada.

Observações

Por padrão, Get-Random gera aleatoriedade criptograficamente segura usando a classe RandomNumberGenerator .

Get-Random nem sempre retorna o mesmo tipo de dados que o valor de entrada. A tabela a seguir mostra o tipo de saída para cada um dos tipos de entrada numéricos.

Tipo de entrada Tipo de saída
SByte Double
Byte Double
Int16 Double
UInt16 Double
Int32 Int32
UInt32 Double
Int64 Int64
UInt64 Double
Double Double
Single Double

A partir do Windows PowerShell 3.0, Get-Random dá suporte a inteiros de 64 bits. No Windows PowerShell 2.0, todos os valores são convertidos em System.Int32.

A partir do PowerShell 7, o parâmetro InputObject no conjunto de parâmetros RandomListItemParameterSet aceita matrizes que contêm uma cadeia de caracteres vazia ou $null. Em versões anteriores do PowerShell, somente o parâmetro Maximum no conjunto de parâmetros RandomNumberParameterSet aceitava uma cadeia de caracteres vazia ou $null.