Get-Random
乱数を取得するか、オブジェクトをコレクションからランダムに選択します。
構文
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>]
説明
コマンドレットは Get-Random
、ランダムに選択された数値を取得します。 オブジェクトのコレクションを に Get-Random
送信すると、コレクションから 1 つ以上のランダムに選択されたオブジェクトが取得されます。
パラメーターまたは入力がない場合、 Get-Random
コマンドは、0 (ゼロ) から Int32.MaxValue (0x7FFFFFFF
、 2,147,483,647
) の間でランダムに選択された 32 ビット符号なし整数を返します。
既定では、 は RandomNumberGeneratorGet-Random
クラスを使用して暗号化によってセキュリティで保護されたランダム性を生成します。
のパラメーター Get-Random
を使用して、最小値と最大値、コレクションから返されるオブジェクトの数、またはシード番号を指定できます。
注意事項
シードを意図的に設定すると、ランダムで反復可能でない動作が発生します。 コマンドを含む Get-Random
スクリプトをデバッグまたは分析する場合など、動作を再現する場合にのみ使用する必要があります。
このシード値は、SetSeed をもう一度使用するか、セッションを閉じるまで、現在のコマンドおよび現在のセッション内のすべての後続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: 配列からいくつかのランダムな整数を取得する
このコマンドは、配列からランダムに選択された 3 つの数値をランダムな順序で取得します。
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: ランダム ファイルを取得する
これらのコマンドは、ローカル コンピューターのドライブから 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 未満の 3 つの乱数を取得します。
Get-Random -Count 3 -Maximum 10
9
0
8
例 13: InputObject パラメーターを空の文字列または$nullと共に使用する
この例では、 InputObject パラメーターは、空の文字列 (''
) と $null
を含む配列を指定します。
Get-Random -InputObject @('a','',$null)
Get-Random
は、、空の文字列、または $null
のいずれかをa
返します。 空のスティングは空白行として表示され、 $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 の値より大きくする必要があります (等しくない)。 Maximum または Minimum の値が浮動小数点数の場合は、Get-Random
ランダムに選択された浮動小数点数を返します。
64 ビット コンピューターでは、 Minimum の値が 32 ビット整数の場合、 既定値の Maximum は Int32.MaxValue です。
Minimum の値が double (浮動小数点数) の場合、既定値の Maximum は 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 の値より小さくする必要があります (等しくない)。 Maximum または Minimum の値が浮動小数点数の場合は、Get-Random
ランダムに選択された浮動小数点数を返します。
Type: | Object |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-SetSeed
乱数ジェネレーターのシード値を指定します。 SetSeed を使用する場合、コマンドレットは System.Random メソッドを使用して擬似乱数を生成しますが、これは暗号化によって安全ではありません。
注意事項
シードを設定すると、ランダムでない動作になります。 これは、コマンドを含む Get-Random
スクリプトをデバッグまたは分析する場合など、動作を再現する場合にのみ使用する必要があります。
このシード値は、SetSeed をもう一度使用するか、セッションを閉じるまで、現在のコマンドと、現在のセッション内のすべての後続Get-Random
のコマンドに使用されます。 シードを既定値にリセットすることはできません。
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 |
入力
1 つ以上のオブジェクトをパイプできます。 Get-Random
は、パイプされたオブジェクトからランダムに値を選択します。
出力
System.Int32, System.Int64, System.Double
Get-Random
は、整数または浮動小数点数、または送信されたコレクションからランダムに選択されたオブジェクトを返します。
メモ
既定では、 は RandomNumberGeneratorGet-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 にキャストされます。
PowerShell 7 以降、RandomListItemParameterSet パラメーター セットの InputObject パラメーターは、空の文字列または $null
を含む配列を受け入れます。 以前の PowerShell バージョンでは、RandomNumberParameterSet パラメーター セットの Maximum パラメーターのみが空の文字列または $null
を受け入れ可能でした。