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 長會隨機選出一個數字。 如果你提交一組物件到 Get-Random,它會從集合中隨機選取一個或多個物件。
在沒有參數或輸入的情況下,指令 Get-Random 會隨機回傳一個介於 0(0)到 [int32]::MaxValue0 之間的 32 位元無符號整數。
你可以使用參數 Get-Random 來指定最小值與最大值、從集合回傳的物件數量,或是種子編號。
Caution
Get-Random 但無法確保密碼學上安全的隨機性。 種子值會用於目前指令以及當前會話中所有後續 Get-Random 指令,直到你再次使用 SetSeed 或關閉會話為止。 你無法把種子重置回預設值。
刻意設定種子會導致非隨機且可重複的行為。 它應該只在嘗試重現行為時使用,例如除錯或分析包含 Get-Random 指令的腳本時。 要注意,種子值可能是同一工作階段中其他程式碼設定的,例如匯入的模組。
PowerShell 7.4 包含 Get-SecureRandom,確保密碼學上的隨機性。
範例
範例 1:取得一個隨機整數
此指令會隨機取得介於 0(0)與 Int32.MaxValue 之間的整數。
Get-Random
3951433
範例二:取得一個介於 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:取得隨機檔案
這些指令會從本地電腦的硬碟隨機選取 50 個檔案 C: 樣本。
$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 的值超過集合中的物件數量,集合中的所有物件會以隨機順序回傳。
參數屬性
| 類型: | 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」)。
最大值必須大於(但不等於)最小值。 如果最大值或最小值是浮點數,則Get-Random會回傳一個隨機選擇的浮點數。
在 64 位元電腦上,若 Minimum 的值為 32 位元整數, 則 Maximum 的預設值為 Int32.MaxValue。
如果 最小 值是雙重(浮點數),則最大 值 的預設值為 Double.MaxValue。 否則,預設值為 Int32.MaxValue。
參數屬性
| 類型: | Object |
| 預設值: | None |
| 支援萬用字元: | False |
| 不要顯示: | False |
參數集
RandomNumberParameterSet
| Position: | 0 |
| 必要: | False |
| 來自管線的值: | False |
| 來自管線按屬性名稱的值: | False |
| 來自剩餘引數的值: | False |
-Minimum
指定隨機數的最小值。 輸入整數、雙精度浮點數,或可轉換為整數或雙數的物件,例如數字字串(「100」)。 預設值為 0 (零)。
最小值必須小於(但不等於)最大值。 如果最大值或最小值是浮點數,則Get-Random會回傳一個隨機選擇的浮點數。
參數屬性
| 類型: | Object |
| 預設值: | None |
| 支援萬用字元: | False |
| 不要顯示: | False |
參數集
RandomNumberParameterSet
| Position: | Named |
| 必要: | False |
| 來自管線的值: | False |
| 來自管線按屬性名稱的值: | False |
| 來自剩餘引數的值: | False |
-SetSeed
指定隨機數產生器的種子值。 當你使用 SetSebe 時,指令檔會產生偽隨機數,這在密碼學上並不安全。
Caution
設定種子會產生非隨機的行為。 它應該只在嘗試重現行為時使用,例如除錯或分析包含 Get-Random 指令的腳本時。
這個種子值會用於目前指令以及當前會話中所有後續 Get-Random 指令,直到你再次使用 SetSeed 或關閉會話為止。 你無法把種子重置回預設值。
參數屬性
| 類型: | |
| 預設值: | 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 | Double |
| Byte | Double |
| Int16 | Double |
| UInt16 | Double |
| Int32 | Int32 |
| UInt32 | Double |
| Int64 | Int64 |
| UInt64 | Double |
| Double | Double |
| Single | Double |
從 PowerShell 3.0 Windows開始,Get-Random 支援 64 位元整數。 在 PowerShell 2.0 Windows中,所有值都鑄造成 System.Int32。
從 PowerShell 7 開始,RandomListItemParameterSet 參數集中的 InputObject 參數接受包含空字串或 $null的陣列。 在早期版本的 PowerShell 中,只有 RandomNumberParameterSet 參數集中的 Maximum 參數接受空字串或 $null。