Get-Random

获取随机数,或从集合中随机选择对象。

语法

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

说明

Get-Random cmdlet 获取随机选择的数字。 如果将对象集合提交到 Get-Random,它将从集合中获取一个或多个随机选择的对象。

如果没有参数或输入,Get-Random 命令将返回 0(零)和 Int32.MaxValue0x7FFFFFFF2,147,483,647)之间随机选择的 32 位无符号整数。

可以使用 Get-Random 的参数来指定种子编号、最小值和最大值,以及从提交的集合返回的对象数。

示例

示例 1:获取随机整数

此命令获取介于 0(零)和 Int32.MaxValue之间的随机整数。

Get-Random

3951433

示例 2:获取介于 0 和 99 之间的随机整数

Get-Random -Maximum 100

47

示例 3:获取 -100 和 99 之间的随机整数

Get-Random -Minimum -100 -Maximum 100

56

示例 4:获取随机浮点数

此命令获取大于或等于 10.7 且小于 20.92 的随机浮点数。

Get-Random -Minimum 10.7 -Maximum 20.93

18.08467273887

示例 5:从数组获取随机整数

此命令从指定的数组中获取随机选择的数字。

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

8

示例 6:从数组中获取多个随机整数

此命令从数组中按随机顺序获取三个随机选择的数字。

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

3
1
13

示例 7:随机化整个集合

此命令按随机顺序返回整个集合。

Count 参数的值是整数的 MaxValue 静态属性。

若要按随机顺序返回整个集合,请输入大于或等于集合中对象数的任何数字。

1, 2, 3, 5, 8, 13 | Get-Random -Count ([int]::MaxValue)

2
3
5
1
8
13

示例 8:获取随机非数值

此命令从非数值集合返回随机值。

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

yellow

示例 9:使用 SetSeed 参数

此示例显示使用 SetSeed 参数的效果。

由于 SetSeed 生成非随机行为,因此通常用于重现结果,例如调试或分析脚本。

# 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

示例 10:获取随机文件

这些命令从本地计算机的 C: 驱动器中随机选择 50 个文件的示例。

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

示例 11:滚动公平切分

本示例滚动 1200 次公平死亡,并计算结果。 第一个命令,For-EachObject 重复调用从通过管道传送的数字(1-6)Get-Random。 结果按其值进行分组,Group-Object 格式为具有 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

指定要返回的随机对象或数字的数目。 默认值为 1。

InputObject一起使用时,如果 计数 的值超过集合中的对象数,Get-Random 以随机顺序返回所有对象。

类型:Int32
Position:Named
默认值:None
必需:False
接受管道输入:False
接受通配符:False

-InputObject

指定对象的集合。 Get-Random 按随机顺序从集合中随机获取对象,以 计数指定的数字。 输入对象、包含对象的变量或获取对象的命令或表达式。 还可以通过管道将对象集合传递给 Get-Random

类型:Object[]
Position:0
默认值:None
必需:True
接受管道输入:True
接受通配符:False

-Maximum

指定随机数的最大值。 Get-Random 返回小于最大值(不相等)的值。 输入整数、双精度浮点数或可转换为整数或双精度的对象,例如数字字符串(“100”)。

最大值 的值必须大于(不等于)最小值的值。 如果 最大值最小值 是浮点数,则 Get-Random 返回随机选择的浮点数。

在 64 位计算机上,如果 最小 的值为 32 位整数,则 Maximum 的默认值 Int32.MaxValue

如果 最小 的值为双精度值(浮点数),则 最大值 的默认值 Double.MaxValue。 否则,默认值 Int32.MaxValue

类型:Object
Position:0
默认值:None
必需:False
接受管道输入:False
接受通配符:False

-Minimum

指定随机数的最小值。 输入整数、双精度浮点数或可转换为整数或双精度的对象,例如数字字符串(“100”)。 默认值为 0(零)。

最小值 的值必须小于(不等于)最大值的值。 如果 最大值最小值 是浮点数,则 Get-Random 返回随机选择的浮点数。

类型:Object
Position:Named
默认值:None
必需:False
接受管道输入:False
接受通配符:False

-SetSeed

指定随机数生成器的种子值。 此种子值用于当前命令和当前会话中的所有后续 Get-Random 命令,直到再次使用 SetSeed 或关闭会话。 无法将种子重置为其默认值。

不需要 SetSeed 参数。 默认情况下,Get-Random 使用 RandomNumberGenerator() 方法生成种子值。 由于 SetSeed 导致非随机行为,因此通常仅在尝试重现行为时使用,例如调试或分析包含 Get-Random 命令的脚本。

类型:Int32
Position:Named
默认值:None
必需:False
接受管道输入:False
接受通配符:False

输入

Object

可以通过管道传递一个或多个对象。 Get-Random 从管道对象中随机选择值。

输出

System.Int32, System.Int64, System.Double

Get-Random 返回整数或浮点数,或从提交的集合中随机选择的对象。

备注

Get-Random 根据会话启动时的系统时间时钟为每个会话设置默认种子。

从 Windows PowerShell 3.0 开始,Get-Random 支持 64 位整数。 在 Windows PowerShell 2.0 中,所有值都转换为 system.Int32