Partilhar via


Get-Random

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

Sintaxe

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 cmdlet Get-Random obtém um número selecionado aleatoriamente. Se você enviar uma coleção de objetos para Get-Random, ela obterá um ou mais objetos selecionados aleatoriamente da coleção.

Sem parâmetros ou entrada, um comando Get-Random retorna um inteiro não assinado de 32 bits selecionado aleatoriamente entre 0 (zero) e [int32]::MaxValue.

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.

Atenção

Get-Random não garante aleatoriedade criptograficamente segura. O valor seed é usado para o comando atual e para todos os comandos Get-Random subsequentes na sessão atual até que você use SetSeed novamente ou feche a sessão. Não é possível redefinir a semente para seu valor padrão.

Definir deliberadamente a semente resulta em um comportamento não aleatório e repetível. Ele só deve ser usado ao tentar reproduzir comportamentos, como ao depurar ou analisar um script que inclui comandos Get-Random. Lembre-se de que o valor seed pode ser definido por outro código na mesma sessão, como um módulo importado.

O PowerShell 7.4 inclui Get-SecureRandom , que garante aleatoriedade criptograficamente segura.

Exemplos

Exemplo 1: Obter um inteiro aleatório

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

Get-Random

3951433

Exemplo 2: Obter um número 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 aleatório de vírgula flutuante

Este comando obtém um número aleatório de vírgula flutuante maior ou igual a 10,7 e menor que 20,93.

Get-Random -Minimum 10.7 -Maximum 20.93

18.08467273887

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

Este 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

Este 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 aleatório não numérico

Este 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 SetSeed parâmetro.

Como SetSeed produz um comportamento não aleatório, ele 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

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

Exemplo 10: Obter ficheiros aleatórios

Esses comandos obtêm uma amostra selecionada aleatoriamente de 50 arquivos da unidade de C: do computador local.

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

Exemplo 11: Rolar dados justos

Este exemplo rola um dado justo 1200 vezes e conta os resultados. O primeiro comando, ForEach-Object repete a chamada para Get-Random a partir dos números canalizados (1-6). Os resultados são agrupados pelo 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: Use 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 retorna 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 aleatórios a serem retornados. O padrão é 1.

Quando utilizado com InputObject que contenham uma coleção:

  • Cada item selecionado aleatoriamente é retornado apenas uma vez.
  • Se o valor de Count exceder o número de objetos na coleção, todos os objetos na coleção serão retornados em ordem aleatória.
Tipo:Int32
Position:Named
Default value:None
Necessário:False
Aceitar entrada de pipeline:False
Aceitar carateres universais: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 contém os objetos ou um comando ou expressão que obtém os objetos. 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 InputObject valor do parâmetro.

Tipo:Object[]
Position:0
Default value:None
Necessário:True
Aceitar entrada de pipeline:True
Aceitar carateres universais: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 possa ser convertido em inteiro ou duplo, como uma cadeia numérica ("100").

O valor de Máximo deve ser maior que (não igual a) o valor de Mínimo. Se o valor de Máximo ou Mínimo for um número de vírgula flutuante, Get-Random devolve um número de vírgula flutuante selecionado aleatoriamente.

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

Se o valor de Minimum for um double (um número de vírgula flutuante), o valor padrão de Maximum será Double.MaxValue. Caso contrário, o valor padrão é Int32.MaxValue.

Tipo:Object
Position:0
Default value:None
Necessário:False
Aceitar entrada de pipeline:False
Aceitar carateres universais: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 possa ser convertido em inteiro ou duplo, como uma cadeia numérica ("100"). O valor padrão é 0 (zero).

O valor de Mínimo deve ser menor que (não igual a) o valor de Máximo. Se o valor de Máximo ou Mínimo for um número de vírgula flutuante, Get-Random devolve um número de vírgula flutuante selecionado aleatoriamente.

Tipo:Object
Position:Named
Default value:None
Necessário:False
Aceitar entrada de pipeline:False
Aceitar carateres universais:False

-SetSeed

Especifica um valor seed para o gerador de números aleatórios. Quando você usa SetSeed, o cmdlet gera números pseudoaleatórios, que não são criptograficamente seguros.

Atenção

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

Esse valor seed é usado para o comando atual e para todos os comandos Get-Random subsequentes na sessão atual até que você use SetSeed novamente ou feche a sessão. Não é possível redefinir a semente para seu valor padrão.

Tipo:Nullable<T>[Int32]
Position:Named
Default value:None
Necessário:False
Aceitar entrada de pipeline:False
Aceitar carateres universais:False

-Shuffle

Devolve toda a coleção numa ordem aleatória.

Tipo:SwitchParameter
Position:Named
Default value:None
Necessário:True
Aceitar entrada de pipeline:False
Aceitar carateres universais:False

Entradas

Object

Você pode canalizar qualquer objeto para este cmdlet. Ele seleciona valores aleatoriamente dos objetos canalizados.

Saídas

Int32

Int64

Double

PSObject

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

Notas

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érica.

Tipo de entrada Tipo de saída
SByte Duplo
Byte Duplo
Int16 Duplo
UInt16 Duplo
Int32 Int32
UInt32 Duplo
Int64 Int64
UInt64 Duplo
Duplo Duplo
Solteiro Duplo

A partir do Windows PowerShell 3.0, Get-Random oferece suporte a inteiros de 64 bits. No Windows PowerShell 2.0, todos os valores são convertidos para 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, apenas o parâmetro Maximum no RandomNumberParameterSet conjunto de parâmetros aceitava uma cadeia de caracteres vazia ou $null.