当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] Get-Random (Microsoft.PowerShell.Utility)

作者:精品下载站 日期:2024-12-14 02:06:37 浏览:14 分类:玩电脑

Get-Random (Microsoft.PowerShell.Utility)


Get-Random

模块 :Microsoft.PowerShell.Utility

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

句法

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>]

描述

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

如果没有参数或输入,Get-Random 命令会返回 0(零)和 [int32]::MaxValue 之间随机选择的 32 位无符号整数。

您可以使用Get-Random 的参数来指定最小值和最大值、从集合返回的对象数或种子数。

警告

Get-Random 不能确保加密安全的随机性。种子值用于当前命令以及当前会话中的所有后续 Get-Random 命令,直到您再次使用 SetSeed 或关闭会话。您无法将种子重置为其默认值。

故意设置种子会导致非随机、可重复的行为。仅当尝试重现行为时才应使用它,例如调试或分析包含 Get-Random 命令的脚本时。请注意,种子值可以由同一会话中的其他代码(例如导入的模块)设置。

PowerShell 7.4 包含 Get-SecureRandom,可确保加密安全的随机性。

示例

示例 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.93 的随机浮点数。

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

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

示例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:使用带有空字符串或 $null 的 InputObject 参数

在此示例中,InputObject 参数指定一个包含空字符串 ('') 和 $null 的数组。

Get-Random -InputObject @('a','',$null)

Get-Random 返回 a、空字符串或 $null。空字符串显示为空行,并且 $null 返回 PowerShell 提示符。

参数

-Count

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

与包含集合的 InputObject 一起使用时:

  • 每个随机选择的项目仅返回一次。
  • 如果Count的值超过集合中的对象数量,则按随机顺序返回集合中的所有对象。
类型 :

整数32

位置:

命名

默认值:

None

必需的:

False

接受管道输入:

False

接受通配符:

False

-InputObject

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

从 PowerShell 7 开始,InputObject 参数接受可包含空字符串或 $null 的数组。该数组可以沿着管道发送或作为 InputObject 参数值发送。

类型 :

Object[]

位置:

0

默认值:

None

必需的:

True

接受管道输入:

True

接受通配符:

False

-Maximum

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

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

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

如果Minimum的值为double(浮点数),则Maximum的默认值为Double.MaxValue。否则,默认值为Int32.MaxValue

类型 :

目的

位置:

0

默认值:

None

必需的:

False

接受管道输入:

False

接受通配符:

False

-Minimum

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

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

类型 :

目的

位置:

命名

默认值:

None

必需的:

False

接受管道输入:

False

接受通配符:

False

-SetSeed

指定随机数生成器的种子值。当您使用 SetSeed 时,cmdlet 会生成伪随机数,这在加密上并不安全。

警告

设置种子会导致非随机行为。仅当尝试重现行为时才应使用它,例如调试或分析包含 Get-Random 命令的脚本时。

此种子值用于当前命令以及当前会话中的所有后续 Get-Random 命令,直到您再次使用 SetSeed 或关闭会话。您无法将种子重置为其默认值。

类型 :

可空[Int32]

位置:

命名

默认值:

None

必需的:

False

接受管道输入:

False

接受通配符:

False

-Shuffle

以随机顺序返回整个集合。

类型 :

SwitchParameter

位置:

命名

默认值:

None

必需的:

True

接受管道输入:

False

接受通配符:

False

输入

对象

您可以通过管道将任何对象传递给此 cmdlet。它从管道对象中随机选择值。

输出

Int32

Int64

PSObject

此 cmdlet 返回整数或浮点数,或者从提交的集合中随机选择的对象。

笔记

Get-Random 并不总是返回与输入值相同的数据类型。下表显示了每种数字输入类型的输出类型。

SByte

双倍的

Byte

双倍的

Int16

双倍的

UInt16

双倍的

Int32

整数32

UInt32

双倍的

Int64

整型64

UInt64

双倍的

Double

双倍的

Single

双倍的

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

从 PowerShell 7 开始,RandomListItemParameterSet 参数集中的 InputObject 参数接受包含空字符串或 $null 的数组。在早期的 PowerShell 版本中,只有 RandomNumberParameterSet 参数集中的 Maximum 参数接受空字符串或 $null

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯