Udostępnij za pośrednictwem


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 Get-Random cmdlet pobiera losowo wybraną liczbę. W przypadku przesyłania kolekcji obiektów do Get-Randomobiektu zostanie ona pobierana co najmniej jeden losowo wybrany obiekt z kolekcji.

Bez parametrów lub danych wejściowych Get-Random polecenie 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.

Uwaga

Get-Random nie zapewnia kryptograficznie bezpiecznej losowości. Wartość inicjatora jest używana dla bieżącego polecenia i dla wszystkich kolejnych Get-Random poleceń w bieżącej sesji do momentu ponownego użycia polecenia SetSeed lub zamknięcia sesji. 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 polecenia. 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 polecenie 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ż ustawienie SetSeed generuje nielosowe zachowanie, zwykle służy 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 C: dysku 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 Get-Random z potoku w liczbach (1–6). Wyniki są grupowane według ich wartości Group-Object i sformatowane jako tabela z wartością 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 do 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 wartość a, ciąg pusty lub $null. Pusta sting jest wyświetlana jako pusty wiersz i $null wraca 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 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 liczbę. 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-Randomobiektu .

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ż wartość maksymalna (nie równa się). 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ść Maksimum 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ść Minimum jest 32-bitową liczbą całkowitą, wartość domyślna Maksimum to Int32.MaxValue.

Jeśli wartość Minimum 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ścią domyślną jest 0 (zero).

Wartość Minimum musi być mniejsza niż (nie równa się) wartości Maksimum. 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. Gdy używasz polecenia SetSeed, polecenie cmdlet generuje liczby pseudorandom, które nie są kryptograficznie bezpieczne.

Uwaga

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 polecenia.

Ta wartość inicjatora jest używana dla bieżącego polecenia i dla wszystkich kolejnych Get-Random poleceń w bieżącej sesji do momentu ponownego użycia polecenia 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

Object

Do tego polecenia cmdlet można przekazać dowolny obiekt. Wybiera wartości losowo z obiektów potokowych.

Dane wyjściowe

Int32

Int64

Double

PSObject

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 Liczba rzeczywista
Byte Liczba rzeczywista
Int16 Liczba rzeczywista
UInt16 Liczba rzeczywista
Int32 Int32
UInt32 Liczba rzeczywista
Int64 Int64
UInt64 Liczba rzeczywista
Liczba rzeczywista Liczba rzeczywista
Pojedynczy Liczba rzeczywista

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.