Get-Random
Ottiene un numero casuale o seleziona oggetti in modo casuale da una raccolta.
Sintassi
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>]
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 in modo casuale tra 0 (zero) e [int32]::MaxValue
.
È possibile utilizzare i parametri di Get-Random
per specificare i valori minimo e massimo, il numero di oggetti restituiti da una raccolta o un numero di inizializzazione.
Attenzione
Get-Random
non garantisce la sicurezza crittografica della casualità. Il 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 si chiude la sessione. Non è possibile reimpostare il valore di inizializzazione sul valore predefinito.
L'impostazione intenzionale del valore di inizializzazione comporta un comportamento ripetibile non casuale. Deve essere 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. Tenere presente che il valore di inizializzazione può essere impostato da altro codice nella stessa sessione, ad esempio un modulo importato.
PowerShell 7.4 include Get-SecureRandom, che garantisce la sicurezza crittografica della casualità.
Esempio
Esempio 1: Ottenere un numero intero casuale
Questo comando ottiene un numero intero casuale compreso tra 0 (zero) e Int32.MaxValue.
Get-Random
3951433
Esempio 2: Ottenere un numero intero casuale compreso tra 0 e 99
Get-Random -Maximum 100
47
Esempio 3: Ottenere un numero 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,93.
Get-Random -Minimum 10.7 -Maximum 20.93
18.08467273887
Esempio 5: Ottenere un numero 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: Randomizzare un'intera raccolta
A partire da PowerShell 7.1, è possibile usare il parametro Shuffle per restituire l'intera raccolta in un ordine casuale.
1, 2, 3, 5, 8, 13 | Get-Random -Shuffle
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
In questo esempio viene illustrato l'effetto dell'uso del parametro SetSeed .
Poiché SetSeed produce un comportamento non casuale, viene in genere 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
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
Esempio 10: Ottenere file casuali
Questi comandi ottengono un campione selezionato in modo casuale 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 dadi
In questo esempio viene eseguito il rollback di un die 1200 volte e vengono conteggiato i risultati. Il primo comando ForEach-Object
ripete la chiamata a Get-Random
dalla pipe in numeri (1-6). I risultati vengono raggruppati in base al valore con Group-Object
e 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
Esempio 12: Usare il parametro Count
È ora possibile usare il parametro Count senza eseguire il piping di oggetti in Get-Random
.
L'esempio seguente ottiene tre numeri casuali minori di 10.
Get-Random -Count 3 -Maximum 10
9
0
8
Esempio 13: Usare il parametro InputObject con una stringa vuota o $null
In questo esempio, il parametro InputObject specifica una matrice contenente una stringa vuota (''
) e $null
.
Get-Random -InputObject @('a','',$null)
Get-Random
a
restituisce , stringa vuota o $null
. Lo sting vuoto viene visualizzato come riga vuota e $null
torna a un prompt di PowerShell.
Parametri
-Count
Specifica il numero di oggetti casuali da restituire. Il valore predefinito è 1.
Se usato con InputObject
contenente una raccolta:
- Ogni elemento selezionato in modo casuale viene restituito una sola volta.
- Se il valore di Count supera il numero di oggetti nell'insieme, tutti gli oggetti dell'insieme vengono restituiti in ordine casuale.
Tipo: | Int32 |
Posizione: | Named |
Valore predefinito: | None |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |
-InputObject
Specifica una raccolta di oggetti. Get-Random
ottiene oggetti selezionati in modo casuale in ordine casuale dall'insieme 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 inviare tramite pipe una raccolta di oggetti a Get-Random
.
A partire da PowerShell 7, il parametro InputObject accetta matrici che possono contenere una stringa vuota o $null
. La matrice può essere inviata verso il basso della pipeline o come valore del parametro InputObject .
Tipo: | Object[] |
Posizione: | 0 |
Valore predefinito: | None |
Necessario: | True |
Accettare l'input della pipeline: | True |
Accettare caratteri jolly: | False |
-Maximum
Specifica un valore massimo per il numero casuale. Get-Random
restituisce un valore minore del valore massimo (non uguale). Immettere un numero intero, un numero a virgola mobile e precisione doppia o un oggetto che può essere convertito in un numero intero o doppio, ad esempio una stringa numerica ("100").
Il valore di Maximum deve essere maggiore di (diverso da) il valore di Minimum. Se il valore di Maximum o Minimum è 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 di Maximum è Int32.MaxValue.
Se il valore di Minimum è un valore double (un numero a virgola mobile), il valore predefinito di Maximum è Double.MaxValue. In caso contrario, il valore predefinito è Int32.MaxValue.
Tipo: | Object |
Posizione: | 0 |
Valore predefinito: | None |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |
-Minimum
Specifica un valore minimo per il numero casuale. Immettere un numero intero, un numero a virgola mobile e precisione doppia o un oggetto che può essere convertito in un numero intero o doppio, ad esempio una stringa numerica ("100"). Il valore predefinito è 0 (zero).
Il valore di Minimum deve essere minore (diverso da) il valore di Maximum. Se il valore di Maximum o Minimum è un numero a virgola mobile, Get-Random
restituisce un numero a virgola mobile selezionato in modo casuale.
Tipo: | Object |
Posizione: | Named |
Valore predefinito: | None |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |
-SetSeed
Specifica un valore di inizializzazione per il generatore di numeri casuali. Quando si usa SetSeed, il cmdlet genera numeri pseudorandomi, che non sono crittograficamente sicuri.
Attenzione
L'impostazione del valore di inizializzazione comporta un comportamento non casuale. Deve essere 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.
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 si chiude la sessione. Non è possibile reimpostare il valore di inizializzazione sul valore predefinito.
Tipo: | Nullable<T>[Int32] |
Posizione: | Named |
Valore predefinito: | None |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |
-Shuffle
Restituisce l'intera raccolta in un ordine casuale.
Tipo: | SwitchParameter |
Posizione: | Named |
Valore predefinito: | None |
Necessario: | True |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |
Input
È possibile inviare tramite pipe qualsiasi oggetto a questo cmdlet. Seleziona i valori in modo casuale dagli oggetti inviati tramite pipe.
Output
Questo cmdlet restituisce un numero intero o a virgola mobile o un oggetto selezionato in modo casuale da una raccolta inviata.
Note
Get-Random
non restituisce sempre lo stesso tipo di dati del valore di input. Nella tabella seguente viene illustrato il tipo di output per ognuno dei tipi di input numerici.
Tipo di input | Tipo di output |
---|---|
SByte | Double |
Byte | Double |
Int16 | Double |
UInt16 | Double |
Int32 | Int32 |
UInt32 | Double |
Int64 | Int64 |
UInt64 | Double |
Double | Double |
Singola | Double |
A partire da Windows PowerShell 3.0, Get-Random
supporta interi a 64 bit. In Windows PowerShell 2.0 viene eseguito il cast di tutti i valori a System.Int32.
A partire da PowerShell 7, il parametro InputObject nel set di parametri RandomListItemParameterSet accetta matrici che contengono una stringa vuota o $null
. Nelle versioni precedenti di PowerShell, solo il parametro Maximum nel set di parametri RandomNumberParameterSet ha accettato una stringa vuota o $null
.