あまり発生する事例はありませんが、他言語であったのでPowerShellで実装してみました。
PowerShellのバージョンによってコマンドが違うので、実際のバージョンを確認してください。
Code 7.0以前
$arr = @("aa","bb","cc","dd","ee") for($i= 0;$i -ne $arr.Length;$i++){ $_rdm = get-random -Maximum ($arr.Length-1) -Minimum 0 $_tmp = $arr[$i] $arr[$i] = $arr[$_rdm] $arr[$_rdm] = $_tmp }
説明
Get-Random
Get-Randomは小数点で指定しなければ基本整数型で返します。
-Maximum
配列数を指定しますが、返す番号がそのままインデックスになるので、配列の要素数-1します
-Minimum
最小値は0です
別の例
$arr = @("aa","bb","cc","dd","ee") $rdm = get-random -Maximum $arr.Length -Minimum 0 -Count $arr.Length foreach($_r in $rdm){ $_tmp = $arr[$rdm.indexof($_r)] $arr[$rdm.indexof($_r)] = $arr[$_r] $arr[$_r] = $_tmp }
ランダムを配列で取得します。配列で取得するためには-Countパラメータを使います。
Forの代わりにForeachを使います。
Foreach中にインデックスを取得するには
配列.IndexOf($Item)
でインデックスが取得できます。
Code 7.1以降
$arr = $arr | Get-Random -Shuffle
7.1以降のバージョンになると配列を直接入れ替える -Shuffle パラメータを使えます。
終わりに
PowerShell6以前のバージョンを使わないほうがいいです。
PowerShell7以降のバージョンを使った方が多様なツールが用意されているので、簡単にPowerShellでコードを書けます。