共用方式為


Get-Random

取得一個隨機數字,或從集合隨機選擇物件。

Syntax

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

Description

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

如果沒有參數或輸入,Get-Random命令會傳回 0 (零) 與 Int32.MaxValue (之間隨機選取的 32 位無符號整數,0x7FFFFFFF2,147,483,647) 。

您可以使用 的參數 Get-Random 來指定種子編號、最小值和最大值,以及從送出集合傳回的物件數目。

範例

範例 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:隨機化整個集合

此命令會以隨機順序傳回整個集合。

Count 參數的值是整數的 MaxValue 靜態屬性。

如果要以隨機順序傳回整個集合,請輸入任何會大於或等於集合中物件數目的數字。

1, 2, 3, 5, 8, 13 | Get-Random -Count ([int]::MaxValue)

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:擲出公平骰子

此範例會擲回 1200 次公平,並計算結果。 第一個命令會 For-EachObject 從以管道傳送的數位重複呼叫 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

參數

-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

Type:Object[]
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-Maximum

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

Maximum 的值必須大於 (不等於) Minimum 的值。 如果 MaximumMinimum 的值是浮點數, 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 的值。 如果 MaximumMinimum 的值是浮點數, Get-Random 則會傳回隨機選取的浮點數。

Type:Object
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-SetSeed

指定隨機數字產生器的種子值。 這個種子值會用於目前命令和目前會話中的所有後續 Get-Random 命令,直到您再次使用 SetSeed 或關閉會話為止。 您無法將種子重設為預設值。

不需要 SetSeed 參數。 根據預設, Get-Random 使用 RandomNumberGenerator () 方法來產生種子值。 因為 SetSeed 會產生非隨機行為,所以通常只有在嘗試重現行為時才會使用,例如偵錯或分析包含 Get-Random 命令的腳本。

Type:Nullable<T>[Int32]
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

輸入

Object

您可以使用管線傳送一或多個物件。 Get-Random 從管道物件隨機選取值。

輸出

System.Int32, System.Int64, System.Double

Get-Random 會傳回整數或浮點數,或從提交的集合隨機選取的物件。

備註

Get-Random 根據工作階段啟動時的系統時間時鐘,為每個工作階段設定預設種子。

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