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")。Maximum 的值必須大於 (不等於) Minimum 的值。
如果 Maximum 或 Minimum 的值為浮點數,Get-Random 會傳回隨機選取的浮點數。
如果 Minimum 的值為雙精度浮點數 (Double),Maximum 的預設值則為 Double.MaxValue,否則預設值為 Int32.MaxValue (2,147,483,647 或 0x7FFFFFFF)。
必要? |
false |
位置? |
1 |
預設值 |
Int32.MaxValue |
接受管線輸入? |
false |
接受萬用字元? |
false |
-Minimum <Object>
指定亂數的最小值。請輸入 32 位元整數或雙精度浮點數,或是輸入可轉換成整數或雙精度浮點數的物件,例如數值字串 ("100")。預設值為 0 (零)。
Minimum 的值必須小於 (不等於) Maximum 的值。如果 Maximum 或 Minimum 的值為浮點數,Get-Random 會傳回隨機選取的浮點數。
必要? |
false |
位置? |
named |
預設值 |
0 |
接受管線輸入? |
false |
接受萬用字元? |
false |
-SetSeed <int>
指定亂數產生器的種子值。這個種子值將一直用於目前的命令和目前工作階段中的所有後續 Get-Random 命令,直到您再次使用 SetSeed 或關閉工作階段為止。您無法將種子重設回預設值,這個值會因時而異。
SetSeed 參數不是必要的。根據預設,Get-Random 會以系統時鐘來產生種子值。通常只有在嘗試重新產生行為 (例如對包含 Get-Random 命令的指令碼進行偵錯或分析) 的情況下才使用 SetSeed,因為它會造成非隨機的行為。
必要? |
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,所以當這個參數的值在命令中是第一個或唯一未具名的參數時,您就可以省略它的參數名稱。