Gets a random number, or selects objects randomly from a collection.
Syntax RandomNumberParameterSet (Default)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>]
Description
The Get-Random
cmdlet gets a randomly selected number. If you submit a collection of objects to Get-Random
, it gets one or more randomly selected objects from the collection.
Without parameters or input, a Get-Random
command returns a randomly selected 32-bit unsigned integer between 0 (zero) and [int32]::MaxValue
.
You can use the parameters of Get-Random
to specify the minimum and maximum values, the number of objects returned from a collection, or a seed number.
Caution
Get-Random
doesn't ensure cryptographically secure randomness. The seed value is used for the current command and for all subsequent Get-Random
commands in the current session until you use SetSeed again or close the session. You can't reset the seed to its default value.
Deliberately setting the seed results in non-random, repeatable behavior. It should only be used when trying to reproduce behavior, such as when debugging or analyzing a script that includes Get-Random
commands. Be aware that the seed value could be set by other code in the same session, such as an imported module.
PowerShell 7.4 includes Get-SecureRandom, which ensures cryptographically secure randomness.
Examples Example 1: Get a random integerThis command gets a random integer between 0 (zero) and Int32.MaxValue.
Get-Random
3951433
Example 2: Get a random integer between 0 and 99
Get-Random -Maximum 100
47
Example 3: Get a random integer between -100 and 99
Get-Random -Minimum -100 -Maximum 100
56
Example 4: Get a random floating-point number
This command gets a random floating-point number greater than or equal to 10.7 and less than 20.93.
Get-Random -Minimum 10.7 -Maximum 20.93
18.08467273887
Example 5: Get a random integer from an array
This command gets a randomly selected number from the specified array.
1, 2, 3, 5, 8, 13 | Get-Random
8
Example 6: Get several random integers from an array
This command gets three randomly selected numbers in random order from an array.
1, 2, 3, 5, 8, 13 | Get-Random -Count 3
3
1
13
Example 7: Randomize an entire collection
Starting in PowerShell 7.1, you can use the Shuffle parameter to return the entire collection in a random order.
1, 2, 3, 5, 8, 13 | Get-Random -Shuffle
2
3
5
1
8
13
Example 8: Get a random non-numeric value
This command returns a random value from a non-numeric collection.
"red", "yellow", "blue" | Get-Random
yellow
Example 9: Use the SetSeed parameter
This example shows the effect of using the SetSeed parameter.
Because SetSeed produces non-random behavior, it's typically used only to reproduce results, such as when debugging or analyzing a 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
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
Example 10: Get random files
These commands get a randomly selected sample of 50 files from the C:
drive of the local computer.
$Files = Get-ChildItem -Path C:\* -Recurse
$Sample = $Files | Get-Random -Count 50
Example 11: Roll fair dice
This example rolls a fair die 1200 times and counts the outcomes. The first command, ForEach-Object
repeats the call to Get-Random
from the piped in numbers (1-6). The results are grouped by their value with Group-Object
and formatted as a table with 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
Example 12: Use the Count parameter
You can now use the Count parameter without piping objects to Get-Random
. The following example gets three random numbers less than 10.
Get-Random -Count 3 -Maximum 10
9
0
8
Example 13: Use the InputObject parameter with an empty string or $null
In this example, the InputObject parameter specifies an array that contains an empty string (''
) and $null
.
Get-Random -InputObject @('a','',$null)
Get-Random
returns either a
, empty string, or $null
. The empty string displays as a blank line and $null
returns to a PowerShell prompt.
Specifies the number of random objects to return. The default is 1.
When used with InputObject
containing a collection:
Specifies a collection of objects. Get-Random
gets randomly selected objects in random order from the collection up to the number specified by Count. Enter the objects, a variable that contains the objects, or a command or expression that gets the objects. You can also pipe a collection of objects to Get-Random
.
Beginning in PowerShell 7, the InputObject parameter accepts arrays that can contain an empty string or $null
. The array can be sent down the pipeline or as an InputObject parameter value.
Object[]
Default value: None Supports wildcards: False DontShow: False Parameter sets RandomListItemParameterSet Position: 0 Mandatory: True Value from pipeline: True Value from pipeline by property name: False Value from remaining arguments: False ShuffleParameterSet Position: 0 Mandatory: True Value from pipeline: True Value from pipeline by property name: False Value from remaining arguments: False -MaximumSpecifies a maximum value for the random number. Get-Random
returns a value that's less than the maximum (not equal). Enter an integer, a double-precision floating-point number, or an object that can be converted to an integer or double, such as a numeric string ("100").
The value of Maximum must be greater than (not equal to) the value of Minimum. If the value of Maximum or Minimum is a floating-point number, Get-Random
returns a randomly selected floating-point number.
On a 64-bit computer, if the value of Minimum is a 32-bit integer, the default value of Maximum is Int32.MaxValue.
If the value of Minimum is a double (a floating-point number), the default value of Maximum is Double.MaxValue. Otherwise, the default value is Int32.MaxValue.
Parameter properties Type: Object Default value: None Supports wildcards: False DontShow: False Parameter sets RandomNumberParameterSet Position: 0 Mandatory: False Value from pipeline: False Value from pipeline by property name: False Value from remaining arguments: False -MinimumSpecifies a minimum value for the random number. Enter an integer, a double-precision floating-point number, or an object that can be converted to an integer or double, such as a numeric string ("100"). The default value is 0 (zero).
The value of Minimum must be less than (not equal to) the value of Maximum. If the value of Maximum or Minimum is a floating-point number, Get-Random
returns a randomly selected floating-point number.
Specifies a seed value for the random number generator. When you use SetSeed, the cmdlet generates pseudorandom numbers, which isn't cryptographically secure.
Caution
Setting the seed results in non-random behavior. It should only be used when trying to reproduce behavior, such as when debugging or analyzing a script that includes Get-Random
commands.
This seed value is used for the current command and for all subsequent Get-Random
commands in the current session until you use SetSeed again or close the session. You can't reset the seed to its default value.
Returns the entire collection in a randomized order.
Parameter properties Type: SwitchParameter Default value: None Supports wildcards: False DontShow: False Parameter sets ShuffleParameterSet Position: Named Mandatory: True Value from pipeline: False Value from pipeline by property name: False Value from remaining arguments: False CommonParametersThis cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction, and -WarningVariable. For more information, see about_CommonParameters.
Inputs ObjectYou can pipe any object to this cmdlet. It selects values randomly from the piped objects.
Outputs Int32 Int64 Double PSObjectThis cmdlet returns an integer or floating-point number, or an object selected randomly from a submitted collection.
NotesGet-Random
doesn't always return the same data type as the input value. The following table shows the output type for each of the numeric input types.
Beginning in Windows PowerShell 3.0, Get-Random
supports 64-bit integers. In Windows PowerShell 2.0, all values are cast to System.Int32.
Beginning in PowerShell 7, the InputObject parameter in the RandomListItemParameterSet parameter set accepts arrays that contain an empty string or $null
. In earlier PowerShell versions, only the Maximum parameter in the RandomNumberParameterSet parameter set accepted an empty string or $null
.
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4