PowerShell: 乱数を取得する Get-Random

PowerShellで乱数を取得する場合、 Get-Randomコマンドレットを使用します。 Get-Randomは整数の乱数だけでなく、 浮動小数点数の乱数も取得可能です。

さらに、パラメータに配列を指定すると配列内の要素を ランダムに返す機能もあります。
Get-Randomコマンドレットの書式は次の通りです。

書式
Get-Random [-Maximum 最大値] [-Minimum 最小値] [-Count 取得数]

Get-Random [-InputObject] オブジェクト [-Count 取得数]

-Maximumは最大値、 -Minimumは最小値を指定します。 両者に整数を指定した場合は整数の乱数が返り、 浮動小数点数を指定した場合は浮動小数点数の乱数が返ります。 省略した場合、-MaximumはInt型またはDouble型の最大値、 -Minimumは0となります。

-Count は取得したい乱数の個数です。 省略した場合は1になります。

-InputObjectは配列等のオブジェクトを指定でき、 オブジェクトの要素をランダムに取得できます。 ただし-InputObjectを指定した場合は、 そのオブジェクトの要素数が-Countの上限値となります。 詳しくは後で説明します。

最大値・最小値を指定して乱数を取得する

-Maximumと-Minimumで最大値・最小値を指定して乱数を得るコード例です。

Get-Random -Maximum 10 -Minimum 1 -Count 2

# 実行結果
3
5

最大値に10、最小値に1の整数を指定しているため、 乱数も整数となります。 -Countが2なので2つの整数を取得できます。

次は浮動小数点数の乱数のコード例です。

Get-Random -Maximum 1.9 -Minimum 1.1 -Count 2

# 実行結果
1.25401311263163
1.30547637017699

最大値に1.9、最小値に1.1のように指定すると、 上のように浮動小数点数の乱数が取得できます。

オブジェクトを指定して乱数を取得する

-InputObjectに配列等のオブジェクトを指定して乱数を取得するコード例です。

配列$arrの各要素には11から15までの数値が入っており、 -InputObjectに$arrを指定します。

$arr = 11..15

Get-Random -InputObject $arr -Count 2

# 実行結果
11
13

上のように配列内の要素がランダムに取得できます。 返って来る要素(乱数)がダブルことはありません。

ここで-Countの値を10にしてみます。 実行結果の取得数に注目してください。

$arr = 11..15

Get-Random -InputObject $arr -Count 10

# 実行結果
13
11
15
12
14

上のように、-InputObjectでオブジェクトを指定した場合、 -Count値の上限はオブジェクトの要素数となります。 各要素がダブルことなくランダムに返って来るので、 配列をシャッフルするのと同じ効果があります。 「-Count 10」の部分を 「$arr.Length」と記述し、 配列の要素数を指定しても同じです。

乱数をダブルことなく取得したい場合は、 -InputObjectで配列を指定する方法をおすすめします。

関連記事: 配列をシャッフルする Get-Random

PowerShell