共用方式為


Get-Random

取得隨機數,或從集合隨機選取物件。

語法

RandomNumberParameterSet (預設值)

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

RandomListItemParameterSet

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

ShuffleParameterSet

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

Description

Get-Random Cmdlet 會取得隨機選取的數位。 如果您將 物件的集合提交至 Get-Random,它會從集合中取得一或多個隨機選取的物件。

如果沒有參數或輸入,Get-Random 命令會傳回隨機選取的 32 位無符號整數,介於 0 (零) 和 [int32]::MaxValue之間。

您可以使用 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 的值 超過集合中的物件數目,則集合中的所有物件都會以隨機順序傳回。

參數屬性

類型:Int32
預設值:None
支援萬用字元:False
不要顯示:False

參數集

RandomNumberParameterSet
Position:Named
必要:False
來自管線的值:False
來自管線按屬性名稱的值:False
來自剩餘引數的值:False
RandomListItemParameterSet
Position:Named
必要:False
來自管線的值:False
來自管線按屬性名稱的值:False
來自剩餘引數的值:False

-InputObject

指定物件的集合。 Get-Random 會以隨機順序從集合隨機選取的物件,到 Count所指定的數位。 輸入物件、包含 物件的變數,或取得物件的命令或表達式。 您也可以使用管線將 物件的集合傳送至 Get-Random

從 PowerShell 7 開始,InputObject 參數會接受可包含空字串或 $null的數位。 陣列可以向下傳送至管線,或做為 InputObject 參數值。

參數屬性

類型:

Object[]

預設值:None
支援萬用字元:False
不要顯示:False

參數集

RandomListItemParameterSet
Position:0
必要:True
來自管線的值:True
來自管線按屬性名稱的值:False
來自剩餘引數的值:False
ShuffleParameterSet
Position:0
必要:True
來自管線的值:True
來自管線按屬性名稱的值:False
來自剩餘引數的值:False

-Maximum

指定隨機數的最大值。 Get-Random 傳回小於最大值的值(不相等)。 輸入整數、雙精確度浮點數,或可以轉換成整數或雙精度浮點數的物件,例如數值字串 (“100” )。

Maximum 的值必須大於 Minimum的值(不等於)。 如果 MaximumMinimum 的值是浮點數,Get-Random 會傳回隨機選取的浮點數。

在 64 位電腦上,如果 Minimum 的值是 32 位整數,則 Maximum 的預設值 Int32.MaxValue

如果 Minimum 的值是雙精度浮點數,則 Maximum 的預設值 Double.MaxValue。 否則,預設值為 Int32.MaxValue

參數屬性

類型:Object
預設值:None
支援萬用字元:False
不要顯示:False

參數集

RandomNumberParameterSet
Position:0
必要:False
來自管線的值:False
來自管線按屬性名稱的值:False
來自剩餘引數的值:False

-Minimum

指定隨機數的最小值。 輸入整數、雙精確度浮點數,或可以轉換成整數或雙精度浮點數的物件,例如數值字串 (“100” )。 預設值為 0 (零)。

Minimum 的值必須小於 (不等於) Maximum的值。 如果 MaximumMinimum 的值是浮點數,Get-Random 會傳回隨機選取的浮點數。

參數屬性

類型:Object
預設值:None
支援萬用字元:False
不要顯示:False

參數集

RandomNumberParameterSet
Position:Named
必要:False
來自管線的值:False
來自管線按屬性名稱的值:False
來自剩餘引數的值:False

-SetSeed

指定隨機數產生器的種子值。 當您使用 SetSeed時,Cmdlet 會產生虛擬隨機數,這在密碼編譯上並不安全。

謹慎

設定種子會導致非隨機行為。 只有當嘗試重現行為時,才應該使用它,例如偵錯或分析包含 Get-Random 命令的腳本。

此種子值會用於目前命令,以及目前會話中所有後續 Get-Random 命令,直到您再次使用 setSeed 或關閉工作階段 為止。 您無法將種子重設為預設值。

參數屬性

類型:

Nullable<T>[Int32]

預設值:None
支援萬用字元:False
不要顯示:False

參數集

(All)
Position:Named
必要:False
來自管線的值:False
來自管線按屬性名稱的值:False
來自剩餘引數的值:False

-Shuffle

以隨機順序傳回整個集合。

參數屬性

類型:SwitchParameter
預設值:None
支援萬用字元:False
不要顯示:False

參數集

ShuffleParameterSet
Position:Named
必要:True
來自管線的值:False
來自管線按屬性名稱的值:False
來自剩餘引數的值:False

CommonParameters

此 Cmdlet 支援一般參數:-Debug、-ErrorAction、-ErrorVariable、-InformationAction、-InformationVariable、-OutBuffer、-OutVariable、-PipelineVariable、-ProgressAction、-Verbose、-WarningAction 和 -WarningVariable。 如需詳細資訊,請參閱 about_CommonParameters

輸入

Object

您可以將任何物件通過管道傳遞至此命令工具。 它會從管道物件隨機選取值。

輸出

Int32

Int64

Double

PSObject

這個 Cmdlet 會傳回整數或浮點數,或從送出集合隨機選取的物件。

備註

Get-Random 不一定會傳回與輸入值相同的數據類型。 下表顯示每個數值輸入類型的輸出類型。

輸入類型 輸出類型
SByte 兩倍
位元 兩倍
Int16 兩倍
UInt16 兩倍
Int32 Int32
UInt32 兩倍
Int64 Int64
UInt64 兩倍
兩倍 兩倍
單身 兩倍

從 Windows PowerShell 3.0 開始,Get-Random 支援 64 位整數。 在 Windows PowerShell 2.0 中,所有值都會轉換成 System.Int32

從 PowerShell 7 開始,RandomListItemParameterSet 參數集中的 InputObject 參數會接受包含空字符串或 $null的陣列。 在舊版 PowerShell 中,只有 RandomNumberParameterSet 中的 Maximum 參數集 接受空字串或 $null