Welcome to MSDN Blogs Sign in | Join | Help

Shuffle Extension Method für IList<T>

Ich schreibe momentan eine kleine Anwendung und benötige hierfür eine zufällig durcheinandergeworfene Liste. Nach einigen Recherchen nach bestehenden Shuffle Methoden, habe ich mich entschieden, für mein kleines Szenario, die von Steven Smith zu nehmen. Gekapselt in einer Extension Method kann man es einfach anwenden.

Extension Method Shuffle:

   1: public static class MyExtension
   2: {
   3:     public static void Shuffle<TSource>( this IList<TSource> source )
   4:     {
   5:         Random rnd = new Random();
   6:  
   7:         for( int i = source.Count - 1; i > 0; i-- )
   8:         {
   9:             int position = rnd.Next( i + 1 );
  10:             TSource value = source[ i ];
  11:             source[ i ] = source[ position ];
  12:             source[ position ] = value;
  13:         }
  14:     }
  15: }

Anwendung:

   1: List<string> list = new List<string> { "Eins", "Zwei", "Drei", "Vier", "Fünf", "Sechs" };
   2:  
   3: for( int i = 0; i < list.Count; i++ )
   4: {
   5:     Console.WriteLine( list[ i ] );
   6: }
   7:  
   8: list.Shuffle();
   9:  
  10: for( int i = 0; i < list.Count; i++ )
  11: {
  12:     Console.WriteLine( list[ i ] );
  13: }

Möchte man das ganze mit einem besseren Zufallszahlengenerator ausstatten, so kann man System.Security.Cryptography.RNGCryptoServiceProvider benutzen.

Wie immer gilt, dieser Code ist nur ein Beispiel. Bei Schäden wird keinerlei Haftung übernommen. Benutzung auf eigene Gefahr!

Published Thursday, May 08, 2008 1:14 PM by dparys
Filed under: ,

Comments

Thursday, May 08, 2008 8:45 AM by Blog like nobody's reading

# Shuffle Extension Method for IList <T>

I need a shuffle method. After some research and surfing msdn blogs, I found one. but in german language. I found this useful. and worth sharing. Extension Method Shuffle: public static class MyExte ...

New Comments to this post are disabled
 
Page view tracker