Udostępnij przez


Get-Random

Pobiera losową liczbę lub losowo wybiera obiekty z kolekcji.

Składnia

RandomNumberParameterSet (domyślnie)

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

RandomListItemParameterSet

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

ShuffleParameterSet

Get-Random
    [-InputObject] <Object[]>
    [-SetSeed <Int32>]
    [-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 (0x7FFFFFFF, 2,147,483,647).

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

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.

Ostrzeżenie

Celowe ustawienie ziarna 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ń.

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.

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ż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
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 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 zwróci albo a, pusty ciąg, albo $null. Pusta sting jest wyświetlana jako pusty wiersz i $null powraca do wiersza 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 InputObject, jeśli wartość Count przekracza liczbę obiektów w kolekcji, Get-Random zwraca wszystkie obiekty w kolejności losowej.

Właściwości parametru

Typ:Int32
Domyślna wartość:None
Obsługuje symbole wieloznaczne:False
DontShow:False

Zestawy parametrów

RandomNumberParameterSet
Position:Named
Obowiązkowe:False
Wartość z potoku:False
Wartość z potoku według nazwy właściwości:False
Wartość z pozostałych argumentów:False
RandomListItemParameterSet
Position:Named
Obowiązkowe:False
Wartość z potoku:False
Wartość z potoku według nazwy właściwości:False
Wartość z pozostałych argumentów: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.

Właściwości parametru

Typ:

Object[]

Domyślna wartość:None
Obsługuje symbole wieloznaczne:False
DontShow:False

Zestawy parametrów

RandomListItemParameterSet
Position:0
Obowiązkowe:True
Wartość z potoku:True
Wartość z potoku według nazwy właściwości:False
Wartość z pozostałych argumentów:False
ShuffleParameterSet
Position:0
Obowiązkowe:True
Wartość z potoku:True
Wartość z potoku według nazwy właściwości:False
Wartość z pozostałych argumentów: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ść 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.

Właściwości parametru

Typ:Object
Domyślna wartość:None
Obsługuje symbole wieloznaczne:False
DontShow:False

Zestawy parametrów

RandomNumberParameterSet
Position:0
Obowiązkowe:False
Wartość z potoku:False
Wartość z potoku według nazwy właściwości:False
Wartość z pozostałych argumentów: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ą.

Właściwości parametru

Typ:Object
Domyślna wartość:None
Obsługuje symbole wieloznaczne:False
DontShow:False

Zestawy parametrów

RandomNumberParameterSet
Position:Named
Obowiązkowe:False
Wartość z potoku:False
Wartość z potoku według nazwy właściwości:False
Wartość z pozostałych argumentów:False

-SetSeed

Określa wartość inicjatora dla generatora liczb losowych. W przypadku korzystania z metody SetSeed polecenie cmdlet używa metody System.Random do generowania liczb pseudolosowych, co nie jest kryptograficznie bezpieczne.

Ostrzeżenie

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.

Właściwości parametru

Typ:

Nullable<T>[Int32]

Domyślna wartość:None
Obsługuje symbole wieloznaczne:False
DontShow:False

Zestawy parametrów

(All)
Position:Named
Obowiązkowe:False
Wartość z potoku:False
Wartość z potoku według nazwy właściwości:False
Wartość z pozostałych argumentów:False

-Shuffle

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

Właściwości parametru

Typ:SwitchParameter
Domyślna wartość:None
Obsługuje symbole wieloznaczne:False
DontShow:False

Zestawy parametrów

ShuffleParameterSet
Position:Named
Obowiązkowe:True
Wartość z potoku:False
Wartość z potoku według nazwy właściwości:False
Wartość z pozostałych argumentów:False

CommonParameters

To polecenie cmdlet obsługuje typowe parametry: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction i -WarningVariable. Aby uzyskać więcej informacji, zobacz about_CommonParameters.

Dane wejściowe

Object

Można przekazać potok co najmniej jeden obiekt. 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 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 Podwójny
Byte Podwójny
Int16 Podwójny
UInt16 Podwójny
Int32 Int32
UInt32 Podwójny
Int64 Int64
UInt64 Podwójny
Podwójny Podwójny
Singiel 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.