うにてぃブログ

主にUnityとC#に関する記事を書いていきます

【C#】List をシャッフルする【LINQ】

LINQ を使わずに配列をシャッフルする方法を以前紹介したが
今回はLINQ を利用した配列をシャッフル方法を記述する

【C#】配列をシャッフルしたり、ランダムに取得する - うにてぃブログ

Guid

C# には GUID を生成するために Guid 構造体が存在する

Guid 構造体 (System) | Microsoft Docs

この構造体の Guid.NewGuid() を呼び出すことでユニークなIDが生成されるのでこれを利用する

var list = Enumerable.Range(0, 20)
    .Select(i => i)
    .OrderBy(i => Guid.NewGuid());

OrderBy でソート順に生成されたGuidを利用することでランダムな並び順にすることが可能になる

f:id:hacchi_man:20200508003440p:plain

※ 速度の計測をしてないので、数が多いと遅い可能性があります

別にRandom.Range(0, 1000)でも問題は無い