Get-Random
获取一个随机数,或从集合中随机选择对象。
语法
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>]
说明
cmdlet Get-Random
获取随机选择的数字。 如果将 对象的集合提交到 Get-Random
,它将从集合中获取一个或多个随机选择的对象。
如果没有参数或输入, Get-Random
命令将返回介于 0 (零) 和 Int32.MaxValue (0x7FFFFFFF
、 2,147,483,647
) 之间的随机选择的 32 位无符号整数。
默认情况下, Get-Random
使用 RandomNumberGenerator 类生成加密安全随机性。
可以使用 的参数 Get-Random
指定最小值和最大值、从集合返回的对象数或种子号。
注意
故意设置种子会导致非随机、可重复的行为。 它仅应在尝试重现行为时使用,例如调试或分析包含 Get-Random
命令的脚本时。
此种子值用于当前命令和当前会话中的所有后续 Get-Random
命令,直到再次使用 SetSeed 或关闭会话。 无法将种子重置为其默认值。
示例
示例 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:随机化整个集合
从 PowerShell 7.1 开始,可以使用 Shuffle 参数以随机顺序返回整个集合。
1, 2, 3, 5, 8, 13 | Get-Random -Shuffle
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 次,并计算结果。 第一个命令 ForEach-Object
重复从以 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
示例 12:使用 Count 参数
现在可以在没有管道对象的情况下使用 Count 参数。Get-Random
以下示例获取三个小于 10 的随机数。
Get-Random -Count 3 -Maximum 10
9
0
8
示例 13:将 InputObject 参数与空字符串或$null
在此示例中, InputObject 参数指定包含空字符串的数组, ''
() 和 $null
。
Get-Random -InputObject @('a','',$null)
Get-Random
将返回 a
、空字符串或 $null
。 空刺显示为空白行并 $null
返回到 PowerShell 提示符。
参数
-Count
指定要返回的随机对象或数字的数目。 默认值为 1。
与 一起使用 InputObject
时,如果 Count 的值超过集合中的对象数, Get-Random
则按随机顺序返回所有对象。
Type: | Int32 |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-InputObject
指定对象的集合。 Get-Random
从集合到 Count 指定的数目,按随机顺序获取随机选择的对象。 输入对象、一个包含这些对象的变量,或可获取这些对象的命令或表达式。 还可以通过管道将对象集合传递给 Get-Random
。
从 PowerShell 7 开始, InputObject 参数接受可以包含空字符串或 $null
的数组。 数组可以向下发送,也可以作为 InputObject 参数值发送。
Type: | Object[] |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-Maximum
指定随机数的最大值。 Get-Random
返回一个小于最大 (不等于) 的值。 输入整数、双精度浮点数或可转换为整数或双精度值的对象,例如数字字符串 (“100”) 。
Maximum 值必须大于(不等于)Minimum 值。 如果 最大值 或 最小值 是浮点数, Get-Random
则返回随机选择的浮点数。
在 64 位计算机上,如果 Minimum 值为 32 位整数,则 最大值 为 Int32.MaxValue。
如果 Minimum 的值为双精度值 (浮点数) ,则 最大值 为 Double.MaxValue。 否则,默认值为 Int32.MaxValue。
Type: | Object |
Position: | 0 |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Minimum
指定随机数的最小值。 输入整数、双精度浮点数或可转换为整数或双精度值的对象,例如数字字符串 (“100”) 。 默认值为 0(零)。
Minimum 值必须小于(不等于)Maximum 值。 如果 最大值 或 最小值 是浮点数, Get-Random
则返回随机选择的浮点数。
Type: | Object |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-SetSeed
为随机数生成程序指定种子值。 使用 SetSeed 时,cmdlet 使用 System.Random 方法生成伪随机数字,这在加密上不安全。
注意
设置种子会导致非随机行为。 它仅应在尝试重现行为时使用,例如调试或分析包含 Get-Random
命令的脚本时。
此种子值用于当前命令和当前会话中的所有后续 Get-Random
命令,直到再次使用 SetSeed 或关闭会话。 无法将种子重置为其默认值。
Type: | Nullable<T>[Int32] |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Shuffle
以随机顺序返回整个集合。
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | False |
输入
可以通过管道传递一个或多个对象。 Get-Random
从管道对象中随机选择值。
输出
System.Int32, System.Int64, System.Double
Get-Random
返回整数或浮点数,或者从提交的集合中随机选择的对象。
备注
默认情况下, Get-Random
使用 RandomNumberGenerator 类生成加密安全随机性。
Get-Random
不始终返回与输入值相同的数据类型。 下表显示了每个数字输入类型的输出类型。
输入类型 | 输出类型 |
---|---|
SByte | Double |
Byte | Double |
Int16 | Double |
UInt16 | Double |
Int32 | Int32 |
UInt32 | Double |
Int64 | Int64 |
UInt64 | Double |
Double | Double |
Single | Double |
从 Windows PowerShell 3.0 开始,Get-Random
支持 64 位整数。 在 Windows PowerShell 2.0 中,所有值都转换为 System.Int32。
从 PowerShell 7 开始,RandomListItemParameterSet 参数集中的 InputObject 参数接受包含空字符串或 $null
的数组。 在早期 PowerShell 版本中,只有 RandomNumberParameterSet 参数集中的 Maximum 参数接受空字符串或 $null
。