using System; using System.Collections.Generic; using System.Text; using System.Security.Cryptography; using System.Linq; namespace TomatenMusic.Util { static class CollectionUtil { public static void Shuffle<T>(this IList<T> list) { RNGCryptoServiceProvider provider = new RNGCryptoServiceProvider(); int n = list.Count; while (n > 1) { byte[] box = new byte[1]; do provider.GetBytes(box); while (!(box[0] < n * (Byte.MaxValue / n))); int k = (box[0] % n); n--; T value = list[k]; list[k] = list[n]; list[n] = value; } } /* public static void Remove<T>(this IList<T> list, T item) { List<T> newList = new List<T>(); bool done = false; foreach (var i in list) { if (i.Equals(item) && !done) { done = true; continue; } newList.Add(i); } list = newList; }*/ public static class Arrays { public static IList<T> AsList<T>(params T[] source) { return source; } } } }