##0.0 はじめに
リスト(List)内の要素をシャッフルする方法を調べてみました。
##1.0 スクリプトでシャッフル
下記のスクリプトでシャッフル可能です。
Shuffle.cs
// リストlistをシャッフルする (for降順ランダム取り)
for (int i = list.Count - 1; i > 0; i--){
var j = Random.Range(0, i+1); // ランダムで要素番号を1つ選ぶ(ランダム要素)
var temp = list[i]; // 一番最後の要素を仮確保(temp)にいれる
list[i] = list[j]; // ランダム要素を一番最後にいれる
list[j] = temp; // 仮確保を元ランダム要素に上書き
}
##2.0 定型文を利用したシャッフル方法
OrderByを使うためにusing System.Linq、Guidを使うためにusing Systemを追加します。
Shuffle.cs
// リストをランダムに並べ替える
list = list.OrderBy(a => Guid.NewGuid()).ToList();
配列の場合は下記でOKです。
array = array.OrderBy(a => Guid.NewGuid()).ToArray();