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で配列を指定する方法をおすすめします。