どうも、ちょげ(@chogetarou)です。
Randomクラスを使って、リスト(List)をシャッフルする方法を紹介します。
方法

Random()クラスを使って、リスト(List)をシャッフルするには、OrderBy()を使います。
まず、System.Linqを導入します。
using System.Linq;
次に、Randomクラスのインスタンスを用意します。
Random rnd = new Random();
そして、リスト(List)からOrderBy()を呼び出します。
OrderBy()の引数のラムダ式で、RandomクラスのインスタンスからNext()を呼び出します。
最後に、OrderBy()からToList()を呼び出します。
T[] result = list.OrderBy(x => rnd.Next()).ToList();
上記のOrderBy().ToList()は、ToList()を呼び出したリスト(List)をシャッフルした新しいリストを返します。
使用例
using System;
using System.Collections.Generic;
using System.Linq;
public class Example
{
public static void Main()
{
List<int> numbers = new List<int> { 1, 2, 3, 4, 5 };
Random rnd = new Random();
List<int> result = numbers.OrderBy(x => rnd.Next()).ToList();
foreach (var i in result)
{
Console.WriteLine(i);
}
}
}

コメント