diff --git a/OmegaLeo.HelperLib/Extensions/IListExtensions.cs b/OmegaLeo.HelperLib/Extensions/IListExtensions.cs
index ff19214..b0801e9 100644
--- a/OmegaLeo.HelperLib/Extensions/IListExtensions.cs
+++ b/OmegaLeo.HelperLib/Extensions/IListExtensions.cs
@@ -1,6 +1,7 @@
using System;
using System.Collections.Generic;
using System.Linq;
+using System.Security.Cryptography;
namespace GameDevLibrary.Extensions
{
@@ -117,5 +118,28 @@ namespace GameDevLibrary.Extensions
{
return array[currentIndex++ % array.Count];
}
+
+ ///
+ /// Shuffle around items in a list.
+ /// Code obtained from https://stackoverflow.com/a/1262619
+ ///
+ ///
+ ///
+ public static void Shuffle(this IList 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--;
+ (list[k], list[n]) = (list[n], list[k]);
+ }
+ }
+
+
}
}
\ No newline at end of file