Get-Random

Hämtar ett slumpmässigt tal eller väljer objekt slumpmässigt från en samling.

Syntax

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>]

Description

Cmdleten Get-Random hämtar ett slumpmässigt valt tal. Om du skickar en samling objekt till Get-Randomhämtar den ett eller flera slumpmässigt valda objekt från samlingen.

Utan parametrar eller indata returnerar ett Get-Random kommando ett slumpmässigt valt 32-bitars heltal utan tecken mellan 0 (noll) och Int32.MaxValue (0x7FFFFFFF, 2,147,483,647).

Som standard Get-Random genererar kryptografiskt säker slumpmässighet med hjälp av klassen RandomNumberGenerator .

Du kan använda parametrarna Get-Random för för att ange lägsta och högsta värden, antalet objekt som returneras från en samling eller ett startvärdesnummer.

Varning

Om du anger fröet avsiktligt resulterar det i ett icke-slumpmässigt, repeterbart beteende. Den bör endast användas när du försöker återskapa beteende, till exempel när du felsöker eller analyserar ett skript som innehåller Get-Random kommandon.

Det här startvärdet används för det aktuella kommandot och för alla efterföljande Get-Random kommandon i den aktuella sessionen tills du använder SetSeed igen eller stänger sessionen. Du kan inte återställa startvärdet till dess standardvärde.

Exempel

Exempel 1: Hämta ett slumpmässigt heltal

Det här kommandot hämtar ett slumpmässigt heltal mellan 0 (noll) och Int32.MaxValue.

Get-Random

3951433

Exempel 2: Hämta ett slumpmässigt heltal mellan 0 och 99

Get-Random -Maximum 100

47

Exempel 3: Hämta ett slumpmässigt heltal mellan -100 och 99

Get-Random -Minimum -100 -Maximum 100

56

Exempel 4: Hämta ett slumpmässigt flyttalsnummer

Det här kommandot får ett slumpmässigt flyttalsnummer som är större än eller lika med 10,7 och mindre än 20,92.

Get-Random -Minimum 10.7 -Maximum 20.93

18.08467273887

Exempel 5: Hämta ett slumpmässigt heltal från en matris

Det här kommandot hämtar ett slumpmässigt valt tal från den angivna matrisen.

1, 2, 3, 5, 8, 13 | Get-Random

8

Exempel 6: Hämta flera slumpmässiga heltal från en matris

Det här kommandot hämtar tre slumpmässigt valda tal i slumpmässig ordning från en matris.

1, 2, 3, 5, 8, 13 | Get-Random -Count 3

3
1
13

Exempel 7: Randomisera en hel samling

Från och med PowerShell 7.1 kan du använda parametern Shuffle för att returnera hela samlingen i slumpmässig ordning.

1, 2, 3, 5, 8, 13 | Get-Random -Shuffle

2
3
5
1
8
13

Exempel 8: Hämta ett slumpmässigt icke-numeriskt värde

Det här kommandot returnerar ett slumpmässigt värde från en icke-numerisk samling.

"red", "yellow", "blue" | Get-Random

yellow

Exempel 9: Använd parametern SetSeed

Det här exemplet visar effekten av att använda parametern SetSeed .

Eftersom SetSeed ger ett icke-slumpmässigt beteende används det vanligtvis bara för att återskapa resultat, till exempel vid felsökning eller analys av ett skript.

# 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

Exempel 10: Hämta slumpmässiga filer

De här kommandona hämtar ett slumpmässigt urval av 50 filer från enheten C: på den lokala datorn.

$Files = Get-ChildItem -Path C:\* -Recurse
$Sample = $Files | Get-Random -Count 50

Exempel 11: Kasta rättvisa tärningar

Det här exemplet rullar en rättvis tärning 1200 gånger och räknar resultatet. Det första kommandot ForEach-Object upprepar anropet till Get-Random från piped i tal (1-6). Resultaten grupperas efter deras värde med Group-Object och formateras som en tabell med 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

Exempel 12: Använd parametern Count

Nu kan du använda parametern Count utan att skicka objekt till Get-Random. I följande exempel hämtas tre slumpmässiga tal som är mindre än 10.

Get-Random -Count 3 -Maximum 10

9
0
8

Exempel 13: Använd parametern InputObject med en tom sträng eller $null

I det här exemplet anger parametern InputObject en matris som innehåller en tom sträng ('') och $null.

Get-Random -InputObject @('a','',$null)

Get-Random returnerar antingen a, tom sträng eller $null. Det tomma stinget visas som en tom rad och $null återgår till en PowerShell-kommandotolk.

Parametrar

-Count

Anger antalet slumpmässiga objekt eller tal som ska returneras. Standard är 1.

När det används med InputObjectreturneras alla objekt i slumpmässig ordning om värdet för Antal överskrider antalet objekt i samlingen Get-Random .

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

-InputObject

Anger en samling objekt. Get-Random hämtar slumpmässigt valda objekt i slumpmässig ordning från samlingen upp till det tal som anges av Antal. Ange objekten, en variabel som innehåller objekten, eller ett kommando eller uttryck som hämtar objekten. Du kan också skicka en samling objekt till Get-Random.

Från och med PowerShell 7 accepterar parametern InputObject matriser som kan innehålla en tom sträng eller $null. Matrisen kan skickas nedåt i pipelinen eller som ett InputObject-parametervärde .

Type:Object[]
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-Maximum

Anger ett maxvärde för det slumpmässiga talet. Get-Random returnerar ett värde som är mindre än maxvärdet (inte lika med). Ange ett heltal, ett flyttal med dubbel precision eller ett objekt som kan konverteras till ett heltal eller dubbelt, till exempel en numerisk sträng ("100").

Värdet för Maximum måste vara större än (inte lika med) värdet för Minimum. Om värdet för Maximum eller Minimum är ett flyttalsnummer Get-Random returnerar ett slumpmässigt valt flyttalsnummer.

Om värdet för Minimum är ett 32-bitars heltal på en 64-bitars dator är standardvärdet för MaximumInt32.MaxValue.

Om värdet för Minimum är dubbelt (ett flyttalsnummer) är standardvärdet MaximumDouble.MaxValue. Annars är standardvärdet Int32.MaxValue.

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

-Minimum

Anger ett minsta värde för det slumpmässiga talet. Ange ett heltal, ett flyttal med dubbel precision eller ett objekt som kan konverteras till ett heltal eller dubbelt, till exempel en numerisk sträng ("100"). Standardvärdet är 0 (noll).

Värdet för Minimum måste vara mindre än (inte lika med) värdet för Maximum. Om värdet för Maximum eller Minimum är ett flyttalsnummer Get-Random returnerar ett slumpmässigt valt flyttalsnummer.

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

-SetSeed

Anger ett startvärde för slumptalsgeneratorn. När du använder SetSeed använder cmdleten metoden System.Random för att generera pseudorandomnummer, vilket inte är kryptografiskt säkert.

Varning

Om du anger startresultatet visas ett icke-slumpmässigt beteende. Den bör endast användas när du försöker återskapa beteende, till exempel när du felsöker eller analyserar ett skript som innehåller Get-Random kommandon.

Det här startvärdet används för det aktuella kommandot och för alla efterföljande Get-Random kommandon i den aktuella sessionen tills du använder SetSeed igen eller stänger sessionen. Du kan inte återställa fröet till dess standardvärde.

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

-Shuffle

Returnerar hela samlingen i en slumpmässig ordning.

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

Indata

Object

Du kan skicka ett eller flera objekt. Get-Random väljer värden slumpmässigt från piped-objekten.

Utdata

System.Int32, System.Int64, System.Double

Get-Random returnerar ett heltal eller flyttalsnummer, eller ett objekt som valts slumpmässigt från en skickad samling.

Kommentarer

Som standard Get-Random genererar kryptografiskt säker slumpmässighet med hjälp av klassen RandomNumberGenerator .

Get-Random returnerar inte alltid samma datatyp som indatavärdet. I följande tabell visas utdatatypen för var och en av de numeriska indatatyperna.

Indatatyp Utdatatyp
SByte Double
Byte Double
Int16 Double
UInt16 Double
Int32 Int32
UInt32 Double
Int64 Int64
UInt64 Double
Double Double
Enkel Double

Från och med Windows PowerShell 3.0 har Get-Random stöd för 64-bitars heltal. I Windows PowerShell 2.0 omvandlas alla värden till System.Int32.

Från och med PowerShell 7 accepterar parametern InputObject i parameteruppsättningen RandomListItemParameterSet matriser som innehåller en tom sträng eller $null. I tidigare PowerShell-versioner accepterade endast parametern Maximum i parameteruppsättningen RandomNumberParameterSet en tom sträng eller $null.