Get-Random

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

语法

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

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

说明

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

没有参数或输入的情况下,Get-Random 命令返回一个在 0(零)和 Int32.MaxValue(0x7FFFFFFF 或 2,147,483,647)之间随机选择的 32 位无符号整数。

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

参数

-Count <int>

确定将返回的对象数。默认值为 1。如果 Count 的值超过集合中的对象数,Get-Random 按随机顺序返回所有对象。

是否为必需?

false

位置?

named

默认值

1

是否接受管道输入?

false

是否接受通配符?

false

-InputObject <Object[]>

指定对象的集合。Get-Random 从该集合中按随机顺序获取随机选择的对象。输入对象、包含对象的变量或用于获取对象的命令或表达式。还可通过管道将对象集合传递到 Get-Random。

是否为必需?

true

位置?

1

默认值

是否接受管道输入?

true (ByValue)

是否接受通配符?

false

-Maximum <Object>

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

如果最大值或最小值是浮点数,Get-Random 返回随机选择的浮点数。

如果最小值是双精度(浮点数),最大值的默认值为 Double.MaxValue。否则,默认值为 Int32.MaxValue(2,147,483,647 或 0x7FFFFFFF)。

是否为必需?

false

位置?

1

默认值

Int32.MaxValue

是否接受管道输入?

false

是否接受通配符?

false

-Minimum <Object>

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

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

是否为必需?

false

位置?

named

默认值

0

是否接受管道输入?

false

是否接受通配符?

false

-SetSeed <int>

为随机数生成程序指定种子值。该种子值用于当前会话中的当前命令和所有后续 Get-Random 命令,直到您再次使用 SetSeed 或关闭该会话。您不能将种子重置为其默认的、基于时钟的值。

SetSeed 参数不是必需的。默认情况下,Get-Random 使用系统时钟生成种子值。因为 SetSeed 会导致非随机行为,所以通常仅当尝试重现行为时(例如调试或分析包括 Get-Random 命令的脚本时)才使用该参数。

是否为必需?

false

位置?

named

默认值

系统时钟

是否接受管道输入?

false

是否接受通配符?

false

<CommonParameters>

此 cmdlet 支持通用参数:-Verbose、-Debug、-ErrorAction、-ErrorVariable、-OutBuffer 和 -OutVariable。有关详细信息,请参阅 about_Commonparameters.

输入和输出

输入类型是指可通过管道传递给 cmdlet 的对象的类型。返回类型是指 Cmdlet 所返回对象的类型。

输入

System.Object

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

输出

System.Object

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

说明

每个会话启动时,Get-Random 基于系统时钟为该会话设置默认种子。

示例 1

C:\PS>get-random

3951433

说明
-----------
此命令获取处于 0(零)和 Int32.MaxValue 之间的一个随机整数。





示例 2

C:\PS>get-random -maximum 100

47

说明
-----------
此命令获取处于 0(零)和 99 之间的一个随机整数。





示例 3

C:\PS>get-random -minimum -100 -maximum 100

-56

说明
-----------
此命令获取处于 -100 和 99 之间的一个随机整数。





示例 4

C:\PS>get-random -min 10.7 -max 20.93

18.08467273887

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





示例 5

C:\PS>get-random -input 1, 2, 3, 5, 8, 13

8

说明
-----------
此命令从指定的数组中获取一个随机选择的数。





示例 6

C:\PS>get-random -input 1, 2, 3, 5, 8, 13 -count 3

3
1
13

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





示例 7

C:\PS>get-random -input 1, 2, 3, 5, 8, 13 -count ([int]::MaxValue)

2
3
5
1
8
13

说明
-----------
此命令按随机顺序返回整个集合。Count 参数的值是整数的 MaxValue 静态属性。

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





示例 8

C:\PS>get-random -input "red", "yellow", "blue"

yellow

说明
-----------
此命令返回非数字集合中的随机值。





示例 9

C:\PS>get-process | get-random

Handles  NPM(K)    PM(K)      WS(K) VM(M)   CPU(s)     Id ProcessName
-------  ------    -----      ----- -----   ------     -- -----------
    144       4     2080        488    36     0.48   3164 wmiprvse

说明
-----------
此命令从计算机上的进程集合中获取随机选择的进程。





示例 10

C:\PS>get-content servers.txt | get-random -count (get-content servers.txt).count | foreach {invoke-expression -computer $_ -command 'get-process powershell'}

说明
-----------
此命令按随机顺序在一系列远程计算机上运行命令。





示例 11

C:\PS>get-random -max 100 -setseed 23


# Commands with the default seed are pseudorandom
PS C:\ps-test> get-random -max 100
59
PS C:\ps-test> get-random -max 100
65
PS C:\ps-test> get-random -max 100
21

# Commands with the same seed are not random
PS C:\ps-test> get-random -max 100 -setseed 23
74
PS C:\ps-test> get-random -max 100 -setseed 23
74
PS C:\ps-test> get-random -max 100 -setseed 23
74

# SetSeed results in a repeatable series
PS C:\ps-test> get-random -max 100 -setseed 23
74
PS C:\ps-test> get-random -max 100
56
PS C:\ps-test> get-random -max 100
84
PS C:\ps-test> get-random -max 100
46
PS C:\ps-test> get-random -max 100 -setseed 23
74
PS C:\ps-test> get-random -max 100
56
PS C:\ps-test> get-random -max 100
84
PS C:\ps-test> get-random -max 100
46

说明
-----------
此示例演示了使用 SetSeed 参数的效果。因为 SetSeed 会产生非随机行为,所以它通常仅用于重现结果,例如调试或分析脚本时。





示例 12

C:\PS>$files = dir -path c:\* -recurse

C:\PS> $sample = $files | get-random -count 50

说明
-----------
这些命令从本地计算机的 C: 驱动器中获取随机选择的包含 50 个文件的样本。





示例 13

C:\PS>get-random 10001

7600

说明
-----------
此命令获取小于 10001 的随机整数。因为 Maximum 参数具有位置 1,所以当该值是命令中的第一个或唯一的未命名参数时,您可以忽略该参数名称。