Condividi tramite


Get-Random

Ottiene un numero casuale o seleziona oggetti in modo casuale da una raccolta.

Sintassi

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

Descrizione

Il Get-Random cmdlet ottiene un numero selezionato in modo casuale. Se si invia una raccolta di oggetti a Get-Random, ottiene uno o più oggetti selezionati in modo casuale dall'insieme.

Senza parametri o input, un Get-Random comando restituisce un intero senza segno a 32 bit selezionato casualmente compreso tra 0 (zero) e Int32.MaxValue (0x7FFFFFFF, 2,147,483,647).

È possibile usare i parametri di Get-Random per specificare un numero di inizializzazione, valori minimi e massimi e il numero di oggetti restituiti da una raccolta inviata.

Esempio

Esempio 1: Ottenere un intero casuale

Questo comando ottiene un intero casuale compreso tra 0 (zero) e Int32.MaxValue.

Get-Random

3951433

Esempio 2: Ottenere un intero casuale compreso tra 0 e 99

Get-Random -Maximum 100

47

Esempio 3: Ottenere un intero casuale compreso tra -100 e 99

Get-Random -Minimum -100 -Maximum 100

56

Esempio 4: Ottenere un numero a virgola mobile casuale

Questo comando ottiene un numero a virgola mobile casuale maggiore o uguale a 10,7 e minore di 20,92.

Get-Random -Minimum 10.7 -Maximum 20.93

18.08467273887

Esempio 5: Ottenere un intero casuale da una matrice

Questo comando ottiene un numero selezionato in modo casuale dalla matrice specificata.

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

8

Esempio 6: Ottenere diversi numeri interi casuali da una matrice

Questo comando ottiene tre numeri selezionati in modo casuale in ordine casuale da una matrice.

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

3
1
13

Esempio 7: Casualizzare un'intera raccolta

Questo comando restituisce l'intera raccolta in ordine casuale.

Il valore del parametro Count è la proprietà statica MaxValue di integer.

Per restituire un'intera raccolta in ordine casuale, immettere un numero qualsiasi maggiore o uguale al numero di oggetti nella raccolta.

1, 2, 3, 5, 8, 13 | Get-Random -Count ([int]::MaxValue)

2
3
5
1
8
13

Esempio 8: Ottenere un valore non numerico casuale

Questo comando restituisce un valore casuale da una raccolta non numerica.

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

yellow

Esempio 9: Usare il parametro SetSeed

Questo esempio mostra l'effetto dell'uso del parametro SetSeed.

Poiché SetSeed produce un comportamento non casuale, in genere viene usato solo per riprodurre i risultati, ad esempio durante il debug o l'analisi di uno 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

Esempio 10: Ottenere file casuali

Questi comandi ottengono un esempio selezionato casualmente di 50 file dall'unità C: del computer locale.

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

Esempio 11: Roll fair dice

Questo esempio esegue il rolling di un numero equo di 1200 volte e conta i risultati. Il primo comando ripete For-EachObject la chiamata a Get-Random dalla pipe nei numeri (1-6). I risultati vengono raggruppati in base al valore e Group-Object formattati come tabella 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

Parametri

-Count

Specifica il numero di oggetti o numeri casuali da restituire. Il valore predefinito è 1.

Se usato con InputObject, se il valore di Count supera il numero di oggetti nell'insieme, Get-Random restituisce tutti gli oggetti in ordine casuale.

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

-InputObject

Specifica una raccolta di oggetti. Get-Random ottiene oggetti selezionati in modo casuale in ordine casuale dalla raccolta fino al numero specificato da Count. Immettere gli oggetti, una variabile che contiene gli oggetti oppure un comando o un'espressione che ottiene gli oggetti. È anche possibile eseguire la pipe di una raccolta di oggetti in Get-Random.

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

-Maximum

Specifica un valore massimo per il numero casuale. Get-Random restituisce un valore minore del valore massimo (non uguale). Immettere un intero, un numero a virgola mobile a precisione doppia o un oggetto che può essere convertito in un intero o doppio, ad esempio una stringa numerica ("100").

Il valore di Maximum deve essere superiore (non uguale) al valore di Minimum. Se il valore massimo o minimo è un numero a virgola mobile, Get-Random restituisce un numero a virgola mobile selezionato in modo casuale.

In un computer a 64 bit, se il valore di Minimum è un intero a 32 bit, il valore predefinito diMaximum è Int32.MaxValue.

Se il valore di Minimum è un doppio (un numero a virgola mobile), il valore predefinito di Maximum è Double.MaxValue. In caso contrario, il valore predefinito è Int32.MaxValue.

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

-Minimum

Specifica un valore minimo per il numero casuale. Immettere un intero, un numero a virgola mobile a precisione doppia o un oggetto che può essere convertito in un intero o doppio, ad esempio una stringa numerica ("100"). Il valore predefinito è 0 (zero).

Il valore di Minimum deve essere inferiore (non uguale) al valore di Maximum. Se il valore massimo o minimo è un numero a virgola mobile, Get-Random restituisce un numero a virgola mobile selezionato in modo casuale.

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

-SetSeed

Specifica un valore di inizializzazione per il generatore di numeri casuali. Questo valore di inizializzazione viene usato per il comando corrente e per tutti i comandi successivi Get-Random nella sessione corrente fino a quando non si usa Di nuovo SetSeed o chiudere la sessione. Non è possibile reimpostare il valore predefinito del seeding.

Il parametro SetSeed non è obbligatorio. Per impostazione predefinita, Get-Random usa il metodo RandomNumberGenerator() per generare un valore di inizializzazione. Poiché SetSeed genera un comportamento non casuale, viene in genere usato solo quando si tenta di riprodurre il comportamento, ad esempio durante il debug o l'analisi di uno script che include Get-Random comandi.

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

Input

Object

È possibile eseguire la pipe di uno o più oggetti. Get-Random seleziona i valori in modo casuale dagli oggetti con pipe.

Output

System.Int32, System.Int64, System.Double

Get-Random restituisce un numero intero o a virgola mobile o un oggetto selezionato in modo casuale da una raccolta inviata.

Note

Get-Random imposta un valore di inizializzazione predefinito per ogni sessione in base all'ora di sistema all'avvio della sessione.

A partire da Windows PowerShell 3.0, Get-Random supporta interi a 64 bit. In Windows PowerShell 2.0 tutti i valori vengono vuoti in System.Int32.