[C#]Randomクラスでリスト(List)をシャッフルするには?

C#

どうも、ちょげ(@chogetarou)です。

Randomクラスを使って、リスト(List)をシャッフルする方法を紹介します。

スポンサーリンク

方法

インターフェース, インターネット, プログラム, ブラウザ, Www

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);    
		}
 	}
}

コメント

タイトルとURLをコピーしました