Get-Random

Pobiera losową liczbę lub wybiera obiekty losowo 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 program pobiera jeden lub więcej losowo wybranych obiektów 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 (0x7FFFFFFF, 2,147,483,647).

Domyślnie Get-Random program generuje kryptograficznie bezpieczną losowość przy użyciu klasy RandomNumberGenerator .

Możesz użyć parametrów Get-Random , aby określić wartości minimalne i maksymalne, liczbę obiektów zwracanych z kolekcji lub liczbę inicjatora.

Przestroga

Ustawienie inicjatora celowo powoduje nielosowe, powtarzalne zachowanie. Należy go używać tylko podczas próby odtworzenia zachowania, takiego jak debugowanie lub analizowanie skryptu zawierającego Get-Random polecenia.

Ta wartość inicjowana 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.

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,92.

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żyj 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

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

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ą uczciwą

W tym przykładzie roluje fair die 1200 razy i zlicza wyniki. Pierwsze polecenie ForEach-Object powtarza wywołanie metody Get-Random z potoku w liczbach (1–6). Wyniki są pogrupowane według ich wartości 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żna użyć parametru Count bez obiektów potokowania do .Get-Random Poniższy przykład pobiera trzy liczby losowe 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 polecenie zwróci aciąg , pusty ciąg lub $null. Puste żądło jest wyświetlane jako pusty wiersz i $null wraca do wiersza polecenia programu PowerShell.

Parametry

-Count

Określa liczbę losowych obiektów lub liczb do zwrócenia. Wartość domyślna to 1.

W przypadku użycia z parametrem InputObject, jeśli wartość Count przekracza liczbę obiektów w kolekcji, Get-Random zwraca wszystkie obiekty w kolejności losowej.

Type:Int32
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters: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 .

Type:Object[]
Position:0
Default value:None
Accept pipeline input:True
Accept wildcard characters: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) wartości Minimum. Jeśli wartość Maksimum lub Minimum 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 maksymalna 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.

Type:Object
Position:0
Default value:None
Accept pipeline input:False
Accept wildcard characters: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) wartości Maksimum. Jeśli wartość Maksimum lub Minimum jest liczbą zmiennoprzecinkową, Get-Random zwraca losowo wybraną liczbę zmiennoprzecinkową.

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

-SetSeed

Określa wartość inicjatora generatora liczb losowych. W przypadku używania metody SetSeed polecenie cmdlet używa metody System.Random do generowania liczb pseudorandomów, które nie są kryptograficznie bezpieczne.

Przestroga

Ustawienie inicjatora powoduje nielosowe zachowanie. Należy go używać tylko podczas próby odtworzenia zachowania, takiego jak debugowanie lub analizowanie skryptu zawierającego Get-Random polecenia.

Ta wartość inicjowana 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.

Type:Nullable<T>[Int32]
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters:False

-Shuffle

Zwraca całą kolekcję w kolejności losowej.

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

Dane wejściowe

Object

Można potokować jeden lub więcej obiektów. Get-Random wybiera losowo wartości z obiektów potokowych.

Dane wyjściowe

System.Int32, System.Int64, System.Double

Get-Random Zwraca liczbę całkowitą lub zmiennoprzecinkową albo obiekt wybrany losowo z przesłanej kolekcji.

Uwagi

Domyślnie Get-Random program generuje kryptograficznie bezpieczną losowość przy użyciu klasy RandomNumberGenerator .

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

Począwszy od Windows PowerShell 3.0, Get-Random obsługuje 64-bitowe liczby całkowite. W 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 tylko parametr Maximum w parametrze RandomNumberParameterSet zaakceptował pusty ciąg lub $null.