Get-Random
取得一個隨機數字,或從集合隨機選擇物件。
Syntax
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>]
Description
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:擲出公平骰子
此範例會擲回公平 die 1200 次,並計算結果。 第一個命令會 ForEach-Object
從以管道傳送的數位重複呼叫 Get-Random
, (1-6) 。 結果會依其值分組, 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
。 空的 sting 會顯示為空白行,並 $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 位整數, 則 Maximum 的預設值為 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
。