Delen via


Get-Random

Hiermee haalt u een willekeurig getal op of selecteert u willekeurig objecten uit een verzameling.

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

De Get-Random cmdlet krijgt een willekeurig geselecteerd nummer. Als u een verzameling objecten verzendt naar Get-Random, worden er een of meer willekeurig geselecteerde objecten uit de verzameling opgehaald.

Zonder parameters of invoer retourneert een Get-Random opdracht een willekeurig geselecteerd 32-bits geheel getal zonder teken tussen 0 (nul) en Int32.MaxValue (0x7FFFFFFF, 2,147,483,647).

Genereert standaard Get-Random cryptografisch beveiligde willekeurigheid met behulp van de klasse RandomNumberGenerator .

U kunt de parameters van Get-Random gebruiken om de minimum- en maximumwaarden, het aantal objecten dat wordt geretourneerd door een verzameling of een seed-getal op te geven.

Waarschuwing

Het opzettelijk instellen van de seed resulteert in niet-willekeurig, herhaalbaar gedrag. Deze moet alleen worden gebruikt bij het reproduceren van gedrag, zoals bij het opsporen van fouten of het analyseren van een script dat opdrachten bevat Get-Random .

Deze seed-waarde wordt gebruikt voor de huidige opdracht en voor alle volgende Get-Random opdrachten in de huidige sessie totdat u SetSeed opnieuw gebruikt of de sessie sluit. U kunt de seed niet opnieuw instellen op de standaardwaarde.

Voorbeelden

Voorbeeld 1: een willekeurig geheel getal ophalen

Met deze opdracht krijgt u een willekeurig geheel getal tussen 0 (nul) en Int32.MaxValue.

Get-Random

3951433

Voorbeeld 2: een willekeurig geheel getal tussen 0 en 99 ophalen

Get-Random -Maximum 100

47

Voorbeeld 3: Een willekeurig geheel getal tussen -100 en 99 ophalen

Get-Random -Minimum -100 -Maximum 100

56

Voorbeeld 4: Een willekeurig drijvendekommagetal ophalen

Met deze opdracht wordt een willekeurig drijvendekommagetal groter dan of gelijk aan 10,7 en kleiner dan 20,92.

Get-Random -Minimum 10.7 -Maximum 20.93

18.08467273887

Voorbeeld 5: Een willekeurig geheel getal ophalen uit een matrix

Met deze opdracht wordt een willekeurig geselecteerd getal opgehaald uit de opgegeven matrix.

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

8

Voorbeeld 6: verschillende willekeurige gehele getallen ophalen uit een matrix

Met deze opdracht worden drie willekeurig geselecteerde getallen in willekeurige volgorde opgehaald uit een matrix.

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

3
1
13

Voorbeeld 7: Een hele verzameling willekeurig maken

Vanaf PowerShell 7.1 kunt u de parameter Shuffle gebruiken om de hele verzameling in een willekeurige volgorde te retourneren.

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

2
3
5
1
8
13

Voorbeeld 8: Een willekeurige, niet-numerieke waarde ophalen

Deze opdracht retourneert een willekeurige waarde uit een niet-numerieke verzameling.

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

yellow

Voorbeeld 9: De parameter SetSeed gebruiken

In dit voorbeeld ziet u het effect van het gebruik van de parameter SetSeed .

Omdat SetSeed niet-willekeurig gedrag produceert, wordt het meestal alleen gebruikt voor het reproduceren van resultaten, zoals bij het opsporen van fouten of het analyseren van een script.

# 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

Voorbeeld 10: Willekeurige bestanden ophalen

Met deze opdrachten wordt een willekeurig geselecteerd voorbeeld van 50 bestanden opgehaald van het C: station van de lokale computer.

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

Voorbeeld 11: Rol eerlijke dobbelstenen

In dit voorbeeld wordt een eerlijke dobbelsteen 1200 keer geroeld en worden de resultaten geteld. De eerste opdracht ForEach-Object herhaalt de aanroep naar Get-Random van de doorgesluisde nummers (1-6). De resultaten worden gegroepeerd op hun waarde met Group-Object en opgemaakt als een tabel met 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

Voorbeeld 12: De parameter Count gebruiken

U kunt nu de parameter Count gebruiken zonder objecten door te sluisen naar Get-Random. In het volgende voorbeeld worden drie willekeurige getallen van minder dan 10 weergegeven.

Get-Random -Count 3 -Maximum 10

9
0
8

Voorbeeld 13: De parameter InputObject gebruiken met een lege tekenreeks of $null

In dit voorbeeld geeft de parameter InputObject een matrix op die een lege tekenreeks ('') en $nullbevat.

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

Get-Random retourneert , alege tekenreeks of $null. De lege steek wordt weergegeven als een lege regel en $null keert terug naar een PowerShell-prompt.

Parameters

-Count

Hiermee geeft u het aantal willekeurige objecten of getallen te retourneren. De standaardwaarde is 1.

Bij gebruik met InputObject, als de waarde van Aantal groter is dan het aantal objecten in de verzameling, Get-Random worden alle objecten in willekeurige volgorde geretourneerd.

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

-InputObject

Hiermee geeft u een verzameling objecten op. Get-Random krijgt willekeurig geselecteerde objecten in willekeurige volgorde van de verzameling tot het aantal dat is opgegeven door Aantal. Voer de objecten in, een variabele die de objecten bevat of een opdracht of expressie waarmee de objecten worden opgehaald. U kunt ook een verzameling objecten doorspezen naar Get-Random.

Vanaf PowerShell 7 accepteert de parameter InputObject matrices die een lege tekenreeks of $nullkunnen bevatten. De matrix kan door de pijplijn worden verzonden of als een inputObject-parameterwaarde .

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

-Maximum

Hiermee geeft u een maximumwaarde voor het willekeurige getal. Get-Random retourneert een waarde die kleiner is dan het maximum (niet gelijk aan). Voer een geheel getal, een drijvendekommagetal met dubbele precisie of een object in dat kan worden geconverteerd naar een geheel getal of dubbel, zoals een numerieke tekenreeks ('100').

De waarde van Maximum moet groter zijn dan (niet gelijk aan) de waarde van Minimum. Als de waarde van Maximum of Minimum een getal met drijvende komma is, Get-Random wordt een willekeurig geselecteerd drijvendekommanummer geretourneerd.

Op een 64-bits computer, als de waarde van Minimum een 32-bits geheel getal is, is de standaardwaarde van MaximumInt32.MaxValue.

Als de waarde van Minimum een dubbele waarde (een getal met drijvende komma) is, is de standaardwaarde van MaximumDouble.MaxValue. Anders is de standaardwaarde Int32.MaxValue.

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

-Minimum

Hiermee geeft u een minimumwaarde voor het willekeurige getal. Voer een geheel getal, een drijvendekommagetal met dubbele precisie of een object in dat kan worden geconverteerd naar een geheel getal of dubbel, zoals een numerieke tekenreeks ('100'). De standaardwaarde is 0 (nul).

De waarde van Minimum moet kleiner zijn dan (niet gelijk aan) de waarde van Maximum. Als de waarde van Maximum of Minimum een getal met drijvende komma is, Get-Random wordt een willekeurig geselecteerd drijvendekommanummer geretourneerd.

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

-SetSeed

Hiermee geeft u een seed-waarde voor de generator voor willekeurige getallen. Wanneer u SetSeed gebruikt, gebruikt de cmdlet de methode System.Random om pseudorandom-getallen te genereren. Dit is niet cryptografisch veilig.

Waarschuwing

Het instellen van de seed resulteert in niet-willekeurig gedrag. Het moet alleen worden gebruikt bij het reproduceren van gedrag, zoals bij het opsporen van fouten of het analyseren van een script dat opdrachten bevat Get-Random .

Deze seed-waarde wordt gebruikt voor de huidige opdracht en voor alle volgende Get-Random opdrachten in de huidige sessie totdat u SetSeed opnieuw gebruikt of de sessie sluit. U kunt de seed-waarde niet opnieuw instellen op de standaardwaarde.

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

-Shuffle

Retourneert de hele verzameling in een willekeurige volgorde.

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

Invoerwaarden

Object

U kunt een of meer objecten doorsnijden. Get-Random selecteert waarden willekeurig uit de objecten met doorsnijding.

Uitvoerwaarden

System.Int32, System.Int64, System.Double

Get-Random retourneert een geheel getal of een drijvendekommagetal of een object dat willekeurig is geselecteerd uit een ingediende verzameling.

Notities

Genereert standaard Get-Random cryptografisch beveiligde willekeurigheid met behulp van de klasse RandomNumberGenerator .

Get-Random retourneert niet altijd hetzelfde gegevenstype als de invoerwaarde. In de volgende tabel ziet u het uitvoertype voor elk van de numerieke invoertypen.

Invoertype Uitvoertype
SByte Dubbel
Byte Dubbel
Int16 Dubbel
UInt16 Dubbel
Int32 Int32
UInt32 Dubbel
Int64 Int64
UInt64 Dubbel
Dubbel Dubbel
Enkelvoudig Dubbel

Vanaf Windows PowerShell 3.0 worden Get-Random 64-bits gehele getallen ondersteund. In Windows PowerShell 2.0 worden alle waarden naar System.Int32 gecast.

Vanaf PowerShell 7 accepteert de parameter InputObject in de parameterset RandomListItemParameterSet matrices die een lege tekenreeks of $nullbevatten. In eerdere Versies van PowerShell accepteerde alleen de parameter Maximum in de parameterset RandomNumberParameterSet een lege tekenreeks of $null.