ソースコード
using System; using System.Collections.ObjectModel; /// <summary> /// 配列の拡張メソッドを管理するクラス /// </summary> public static class ArrayExtensions { /// <summary> /// ランダムに並び替えた新しい配列を返します /// </summary> public static T[] Shuffle<T>(this T[] array) { var length = array.Length; var result = new T[length]; Array.Copy(array, result, length); var random = new Random(); int n = length; while (1 < n) { n--; int k = random.Next(n + 1); var tmp = result[k]; result[k] = result[n]; result[n] = tmp; } return result; } }
使い方
var array = new []{ 1, 2, 3, 4, 5 }; array = array.Shuffle();
参考サイト様
配列やコレクションをシャッフルする(ランダムに並び替える) - .NET Tips (VB.NET,C#...)