次の方法で共有


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から の間でランダムに選択された 32 ビット符号なし整数を返します。

のパラメーター Get-Random を使用して、最小値と最大値、コレクションから返されるオブジェクトの数、またはシード番号を指定できます。

注意事項

Get-Random では、暗号によって安全なランダム性が保証されません。 シード値は、SetSeed をもう一度使用するか、セッションを閉じるまで、現在のコマンドおよび現在のセッション内のすべての後続Get-Randomのコマンドに使用されます。 シードを既定値にリセットすることはできません。

シードを意図的に設定すると、ランダムで反復可能でない動作になります。 コマンドを含む Get-Random スクリプトをデバッグまたは分析する場合など、動作を再現する場合にのみ使用する必要があります。 シード値は、インポートされたモジュールなど、同じセッション内の他のコードによって設定される可能性があることに注意してください。

PowerShell 7.4 には が含まれています Get-SecureRandom。これにより、暗号によって安全なランダム性が保証されます。

例 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.93 未満のランダムな浮動小数点数を取得します。

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

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-ObjectSelect-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 に使用する場合:

  • ランダムに選択された各アイテムは、1 回だけ返されます。
  • Count の値がコレクション内のオブジェクトの数を超えると、コレクション内のすべてのオブジェクトがランダムな順序で返されます。
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 ビット整数の場合、 既定値の MaximumInt32.MaxValue です

Minimum の値が double (浮動小数点数) の場合、既定値の MaximumDouble.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 を使用すると、コマンドレットによって擬似乱数が生成されます。これは、暗号化によって安全ではありません。

注意事項

シードを設定すると、ランダムでない動作になります。 これは、コマンドを含む 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

入力

Object

任意のオブジェクトをこのコマンドレットにパイプできます。 パイプされたオブジェクトからランダムに値を選択します。

出力

Int32

Int64

Double

PSObject

このコマンドレットは、整数または浮動小数点数、または送信されたコレクションからランダムに選択されたオブジェクトを返します。

メモ

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を受け入れ可能でした。