Get-Random
Pobiera losową liczbę lub losowo wybiera obiekty z kolekcji.
Składnia
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>]
Opis
Polecenie cmdlet Get-Random
pobiera losowo wybraną liczbę. Jeśli przesyłasz kolekcję obiektów do Get-Random
, pobiera jeden lub więcej losowo wybranych obiektów z kolekcji.
Bez parametrów lub danych wejściowych polecenie Get-Random
zwraca losowo wybraną 32-bitową liczbę całkowitą bez znaku z zakresu od 0 (zero) do [int32]::MaxValue
.
Możesz użyć parametrów Get-Random
, aby określić minimalne i maksymalne wartości, liczbę obiektów zwracanych z kolekcji lub liczbę inicjatorów.
Ostrożność
Get-Random
nie zapewnia kryptograficznie bezpiecznej losowości. Wartość inicjatora jest używana dla bieżącego polecenia i dla wszystkich kolejnych poleceń Get-Random
w bieżącej sesji, dopóki nie użyjesz SetSeed ponownie lub zamknij sesję. Nie można zresetować inicjatora do jego wartości domyślnej.
Celowe ustawianie inicjatora powoduje nielosowe, powtarzalne zachowanie. Należy go używać tylko podczas próby odtworzenia zachowania, na przykład podczas debugowania lub analizowania skryptu zawierającego Get-Random
poleceń. Należy pamiętać, że wartość inicjatora może być ustawiana przez inny kod w tej samej sesji, na przykład zaimportowany moduł.
Program PowerShell 7.4 zawiera Get-SecureRandom, co zapewnia kryptograficznie bezpieczną losowość.
Przykłady
Przykład 1. Pobieranie losowej liczby całkowitej
To polecenie pobiera losową liczbę całkowitą z zakresu od 0 (zero) do Int32.MaxValue.
Get-Random
3951433
Przykład 2: Pobieranie losowej liczby całkowitej z zakresu od 0 do 99
Get-Random -Maximum 100
47
Przykład 3. Pobieranie losowej liczby całkowitej z zakresu od -100 do 99
Get-Random -Minimum -100 -Maximum 100
56
Przykład 4. Pobieranie losowej liczby zmiennoprzecinkowej
To polecenie pobiera losową liczbę zmiennoprzecinkową większą lub równą 10,7 i mniejszą niż 20,93.
Get-Random -Minimum 10.7 -Maximum 20.93
18.08467273887
Przykład 5. Pobieranie losowej liczby całkowitej z tablicy
To polecenie pobiera losowo wybraną liczbę z określonej tablicy.
1, 2, 3, 5, 8, 13 | Get-Random
8
Przykład 6. Pobieranie kilku losowych liczb całkowitych z tablicy
To polecenie pobiera trzy losowo wybrane liczby w kolejności losowej z tablicy.
1, 2, 3, 5, 8, 13 | Get-Random -Count 3
3
1
13
Przykład 7. Losowe określanie całej kolekcji
Począwszy od programu PowerShell 7.1, można użyć parametru Shuffle, aby zwrócić całą kolekcję w kolejności losowej.
1, 2, 3, 5, 8, 13 | Get-Random -Shuffle
2
3
5
1
8
13
Przykład 8. Pobieranie losowej wartości nieliczbowej
To polecenie zwraca losową wartość z kolekcji nieliczbowej.
"red", "yellow", "blue" | Get-Random
yellow
Przykład 9. Używanie parametru SetSeed
W tym przykładzie pokazano efekt użycia parametru SetSeed.
Ponieważ setSeed generuje nielosowe zachowanie, zwykle jest używany tylko do odtwarzania wyników, takich jak podczas debugowania lub analizowania skryptu.
# 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
Przykład 10: Pobieranie losowych plików
Te polecenia pobierają losowo wybraną próbkę 50 plików z dysku C:
komputera lokalnego.
$Files = Get-ChildItem -Path C:\* -Recurse
$Sample = $Files | Get-Random -Count 50
Przykład 11: Rzut kostką sprawiedliwą
W tym przykładzie rzutuje uczciwą kostkę 1200 razy i zlicza wyniki. Pierwsze polecenie, ForEach-Object
powtarza wywołanie, aby Get-Random
z potoku w liczbach (1–6). Wyniki są grupowane według ich wartości z Group-Object
i sformatowane jako tabela z 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
Przykład 12. Użyj parametru Count
Teraz możesz użyć parametru Count bez obiektów potokowych, aby Get-Random
.
Poniższy przykład pobiera trzy losowe liczby mniejsze niż 10.
Get-Random -Count 3 -Maximum 10
9
0
8
Przykład 13: Użyj parametru InputObject z pustym ciągiem lub $null
W tym przykładzie parametr InputObject określa tablicę zawierającą pusty ciąg (''
) i $null
.
Get-Random -InputObject @('a','',$null)
Get-Random
zwraca ciąg a
, pusty ciąg lub $null
. Pusta sting jest wyświetlana jako pusty wiersz i $null
powraca do wiersza programu PowerShell.
Parametry
-Count
Określa liczbę obiektów losowych do zwrócenia. Wartość domyślna to 1.
W przypadku użycia z InputObject
zawierającym kolekcję:
- Każdy losowo wybrany element jest zwracany tylko raz.
- Jeśli wartość Count przekracza liczbę obiektów w kolekcji, wszystkie obiekty w kolekcji są zwracane w kolejności losowej.
Typ: | Int32 |
Position: | Named |
Domyślna wartość: | None |
Wymagane: | False |
Akceptowanie danych wejściowych potoku: | False |
Akceptowanie symboli wieloznacznych: | False |
-InputObject
Określa kolekcję obiektów.
Get-Random
pobiera losowo wybrane obiekty w kolejności losowej z kolekcji do liczby określonej przez Count. Wprowadź obiekty, zmienną zawierającą obiekty lub polecenie lub wyrażenie, które pobiera obiekty. Możesz również przekazać kolekcję obiektów do Get-Random
.
Począwszy od programu PowerShell 7, parametr InputObject akceptuje tablice, które mogą zawierać pusty ciąg lub $null
. Tablicę można wysłać w dół potoku lub jako wartość parametru InputObject.
Typ: | Object[] |
Position: | 0 |
Domyślna wartość: | None |
Wymagane: | True |
Akceptowanie danych wejściowych potoku: | True |
Akceptowanie symboli wieloznacznych: | False |
-Maximum
Określa wartość maksymalną dla liczby losowej.
Get-Random
zwraca wartość mniejszą niż maksymalna (nie równa). Wprowadź liczbę całkowitą, liczbę zmiennoprzecinkową o podwójnej precyzji lub obiekt, który można przekonwertować na liczbę całkowitą lub podwójną, na przykład ciąg liczbowy ("100").
Wartość Maksymalna musi być większa niż (nie równa się) wartości Minimum. Jeśli wartość maksymalna lub minimalna jest liczbą zmiennoprzecinkową, Get-Random
zwraca losowo wybraną liczbę zmiennoprzecinkową.
Na komputerze 64-bitowym, jeśli wartość Minimalna jest 32-bitową liczbą całkowitą, domyślną wartością Maksymalna jest Int32.MaxValue.
Jeśli wartość Minimalna jest podwójna (liczba zmiennoprzecinkowa), wartość domyślna Maksymalna to Double.MaxValue. W przeciwnym razie wartość domyślna to Int32.MaxValue.
Typ: | Object |
Position: | 0 |
Domyślna wartość: | None |
Wymagane: | False |
Akceptowanie danych wejściowych potoku: | False |
Akceptowanie symboli wieloznacznych: | False |
-Minimum
Określa minimalną wartość dla liczby losowej. Wprowadź liczbę całkowitą, liczbę zmiennoprzecinkową o podwójnej precyzji lub obiekt, który można przekonwertować na liczbę całkowitą lub podwójną, na przykład ciąg liczbowy ("100"). Wartość domyślna to 0 (zero).
Wartość Minimalna musi być mniejsza niż (nie równa się) wartości Maksymalna. Jeśli wartość maksymalna lub minimalna jest liczbą zmiennoprzecinkową, Get-Random
zwraca losowo wybraną liczbę zmiennoprzecinkową.
Typ: | Object |
Position: | Named |
Domyślna wartość: | None |
Wymagane: | False |
Akceptowanie danych wejściowych potoku: | False |
Akceptowanie symboli wieloznacznych: | False |
-SetSeed
Określa wartość inicjatora dla generatora liczb losowych. W przypadku używania SetSeedpolecenie cmdlet generuje liczby pseudorandom, które nie są bezpieczne kryptograficznie.
Ostrożność
Ustawienie inicjatora powoduje nielosowe zachowanie. Należy go używać tylko podczas próby odtworzenia zachowania, na przykład podczas debugowania lub analizowania skryptu zawierającego Get-Random
poleceń.
Ta wartość inicjowana jest używana dla bieżącego polecenia i dla wszystkich kolejnych poleceń Get-Random
w bieżącej sesji do momentu ponownego użycia SetSeed lub zamknięcia sesji. Nie można zresetować inicjatora do jego wartości domyślnej.
Typ: | Nullable<T>[Int32] |
Position: | Named |
Domyślna wartość: | None |
Wymagane: | False |
Akceptowanie danych wejściowych potoku: | False |
Akceptowanie symboli wieloznacznych: | False |
-Shuffle
Zwraca całą kolekcję w kolejności losowej.
Typ: | SwitchParameter |
Position: | Named |
Domyślna wartość: | None |
Wymagane: | True |
Akceptowanie danych wejściowych potoku: | False |
Akceptowanie symboli wieloznacznych: | False |
Dane wejściowe
Do tego polecenia cmdlet można przekazać dowolny obiekt. Wybiera wartości losowo z obiektów potokowych.
Dane wyjściowe
To polecenie cmdlet zwraca liczbę całkowitą lub zmiennoprzecinkową albo obiekt wybrany losowo z przesłanej kolekcji.
Uwagi
Get-Random
nie zawsze zwraca ten sam typ danych co wartość wejściowa. W poniższej tabeli przedstawiono typ danych wyjściowych dla każdego z typów danych wejściowych liczbowych.
Typ danych wejściowych | Typ danych wyjściowych |
---|---|
SByte | Podwójny |
Bajt | Podwójny |
Int16 | Podwójny |
UInt16 | Podwójny |
Int32 | Int32 |
UInt32 | Podwójny |
Int64 | Int64 |
UInt64 | Podwójny |
Podwójny | Podwójny |
Pojedynczy | Podwójny |
Począwszy od programu Windows PowerShell 3.0, Get-Random
obsługuje 64-bitowe liczby całkowite. W programie Windows PowerShell 2.0 wszystkie wartości są rzutowane na System.Int32.
Począwszy od programu PowerShell 7, parametr InputObject w zestawie parametrów RandomListItemParameterSet akceptuje tablice zawierające pusty ciąg lub $null
. We wcześniejszych wersjach programu PowerShell parametr Maximum w parametrze RandomNumberParameterSet zaakceptował pusty ciąg lub $null
.