Get-Random

Gets a random number, or selects objects randomly from a collection.

语法

RandomNumberParameterSet (默认值)

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

RandomListItemParameterSet

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

说明

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 (0x7FFFFFFF, 2,147,483,647).

You can use the parameters of Get-Random to specify a seed number, minimum and maximum values, and the number of objects returned from a submitted collection.

示例

Example 1: Get a random integer

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

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

This command returns the entire collection in random order.

The value of the Count parameter is the MaxValue static property of integers.

To return an entire collection in random order, enter any number that is greater than or equal to the number of objects in the collection.

1, 2, 3, 5, 8, 13 | Get-Random -Count ([int]::MaxValue)
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 is 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
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

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, For-EachObject 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

参数

-Count

Specifies the number of random objects or numbers to return. The default is 1.

When used with InputObject, if the value of Count exceeds the number of objects in the collection, Get-Random returns all of the objects in random order.

参数属性

类型:Int32
默认值:None
支持通配符:False
不显示:False

参数集

RandomListItemParameterSet
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-InputObject

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.

参数属性

类型:

Object[]

默认值:None
支持通配符:False
不显示:False

参数集

RandomListItemParameterSet
Position:0
必需:True
来自管道的值:True
来自管道的值(按属性名称):False
来自剩余参数的值:False

-Maximum

Specifies a maximum value for the random number. Get-Random returns a value that is 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.

参数属性

类型:Object
默认值:None
支持通配符:False
不显示:False

参数集

RandomNumberParameterSet
Position:0
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-Minimum

Specifies 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.

参数属性

类型:Object
默认值:None
支持通配符:False
不显示:False

参数集

RandomNumberParameterSet
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-SetSeed

Specifies a seed value for the random number generator. 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 cannot reset the seed to its default value.

The SetSeed parameter is not required. By default, Get-Random uses the RandomNumberGenerator() method to generate a seed value. Because SetSeed results in non-random behavior, it is typically used only when trying to reproduce behavior, such as when debugging or analyzing a script that includes Get-Random commands.

参数属性

类型:Int32
默认值:None
支持通配符:False
不显示:False

参数集

(All)
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

CommonParameters

This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction, and -WarningVariable. For more information, see about_CommonParameters.

输入

Object

You can pipe one or more objects. Get-Random selects values randomly from the piped objects.

输出

System.Int32, System.Int64, System.Double

Get-Random returns an integer or floating-point number, or an object selected randomly from a submitted collection.

备注

Get-Random sets a default seed for each session based on the system time clock when the session starts.

Beginning in Windows PowerShell 3.0, Get-Random supports 64-bit integers. In Windows PowerShell 2.0, all values are cast to System.Int32.