IList Generic Shuffle
Auteur: Abbas - 14 februari 2013 - 12:53 - Gekeurd door: Abbas - Hits: 2469 - Aantal punten: (0 stemmen)
Een generic extension method om de items in een lijst in een willekeurige volgorde te zetten. De methode maakt gebruik van het Fisher-Yates mechanisme (http://en.wikipedia.org/wiki/Fisher-Yates).
|
Code: |
public static void Shuffle<T>(this IList<T> list)
{
var rnd = new Random();
for (int i = list.Count - 1; i >= 0; i--)
{
var r = rnd.Next(i + 1);
T value = list[r];
list[r] = list[i];
list[i] = value;
}
}
public static void Shuffle<T>(this IList<T> list) { for (int i = list.Count - 1; i >= 0; i--) { var r = rnd.Next(i + 1); T value = list[r]; list[r] = list[i]; list[i] = value; } }
Voorbeeld gebruik:
//Array met integers
var numbers = new int[3] { 1, 2, 3 };
numbers.Shuffle();
//Lijst met anonymous objects
var items = new []
{
new { Code = 1, StringVal = "1" },
new { Code = 2, StringVal = "2" },
new { Code = 3, StringVal = "3" },
new { Code = 4, StringVal = "4" }
};
items.Shuffle();
//Array met integers var numbers = new int[3] { 1, 2, 3 };numbers.Shuffle(); //Lijst met anonymous objects { new { Code = 1, StringVal = "1" }, new { Code = 2, StringVal = "2" }, new { Code = 3, StringVal = "3" }, new { Code = 4, StringVal = "4" } }; items.Shuffle();
Download code (.txt)
|
|
Stemmen |
Niet ingelogd. |
|