Willkommen bei dotnet-snippets.de! Snippet hinzufügen Login Registrieren
Snippets in der Datenbank: 1563 | Anzahl registrierter User: 1895 | Besucher online: 204
Hauptmenü
Home
Top Ten
Zufälliger Snippet
FAQs
.NET Community
dotnet-forum.de
dotnet-kicks.de
Social

RSS Feeds
Rss Alle Snippets
Rss C#
Rss VB.NET
Rss C++
Rss ASP.NET
Partner
Member of Microsoft Community Leader/Insider Program (CLIP)

Zufälliger Eintrag aus einer Liste (Extension Method)


Autor: ThomasMentzel
Sprache: C#
Bewertung:
noch nicht bewertet
Anzahl der Aufrufe: 2303
  
Kick it on dotnet-kicks.de  

Beschreibung:

Eine kleine aber feine Methode, die aus einer Enumeration einen zufälligen Eintrag zurück gibt.
Die Methode kann auf jede IEnumerable angewendet werden.
Die Methode merkt sich NICHT, welche Einträge bereits zurück gegeben wurden. In der Statistik würde man dazu sagen "Ziehen mit Zurücklegen" ;).

var list = new List();
list.Add(new MyClass("Eins"));
list.Add(new MyClass("Zwei"));

// anItem ist entweder "Eins" oder "Zwei"
var anItem = list.Random();



Abgelegt unter: IEnumerable, Random, .



C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
        private static Random _randomCache;

        /// <summary>
        /// return a random item from source list
        /// </summary>
        /// <typeparam name="T">generic type</typeparam>
        /// <param name="source">source list</param>
        /// <returns>random item</returns>
        public static T Random<T>(this IEnumerable<T> source)
        {
            // use static randomizer
            if (_randomCache == null) _randomCache = new Random(DateTime.Now.Millisecond);

            // get index of random item
            int index = _randomCache.Next(source.Count());

            // return first item after a skip of "index"
            return source.Skip(index).First();
        }

Sie haben Fragen zu diesem Snippet oder brauchen Hilfe bei der .NET Entwicklung?
Freundliche und kompetente Entwickler helfen Ihnen gern weiter im Forum für .NET Entwicklung.



Kommentare:
(Zum Schreiben von Kommentaren bitte anmelden.)

Keks1911 schrieb am:  25.07.2010 13:29:51

Die Zeile "if (_randomCache == null) _randomCache = new Random(DateTime.Now.Millisecond);" kann man sich sparen, wenn man Random bereits statisch initialisiert.


Diese Snippets könnten für Sie interessant sein:
[C#] simple generic pipeline
[C#] Controls gleichen Typs von einem Container in Winform holen
[C#] Duplikate aus einer IEnumerable entfernen
[C#] Enumerator as a parameter of a method
[C#] Stream, der mit foreach() durchlaufen werden kann
[C#] Eine allgemeine Liste (IEnumerable) in ein Array umwandeln
[C#] Implode und Trim für String-Enumerationen (Extension Method)
[C#] IsNull and IsNullOrEmpty Extension-Methods become Lazy
[C#] Erzeugen eines zufälligen Strings
[C#] Zufallsfarbe erzeugen
[C#] Zufallszahlen, die sich nicht wiederholen
[C#] Zufällige Row aus DataTable
[VB.NET] MAC und HEX generieren
[VB.NET] Zufallszahl erzeugen (mit Prüfung)
[C#] Random Bool
[C#] Passwort nach bestimmtem Aufbau generieren
[VB.NET] Passwortgenerator
[C#] Integers
[C#] Search Plugin-DLLs with one line
[C#] sehr einfacher Timer
[C#] BindingList mit Sortierfunktion
[C#] Datei öffnen
[C#] ListView Spalten sortieren
[C#] byte-String in byte wandeln
[C#] Excel Spalten Bezeichnung nach Integer
[C#] Prozentual Textvergleichen
[C#] Console in eigene Form einbinden
[C#] Programm am Desktop andocken
[C#] lokale User und Gruppen administrieren
[C#] SimpleDb
[C#] Primärschlüsselwerte ermitteln
[C#] Automatisches Umbenennen eines Pfades
[C#] Connection-String Dialog öffnen
[C#] URL auslesen
[C#] Silverlight Anwendung erstellen
[C#] Text codieren
[VB.NET] ''Enter'' in TextBox
[C#] Programm RUN Check
[C#] XAML Grundlagen in Silverlight 3
[C#] MakeNiceSize()
[C#] 22 System Pfade abfragen
[C#] Zahlensysteme (BIN, HEX, OCT, DEZ) umrechnen
[C#] Erzeugen von Zeichenfolgen durch Permutation
[C#] Form ohne Rahmen verschieben
[C#] Byte-Array in Struktur kopieren
[C#]
[VB.NET] Treenode-Tags zur verwendung abfragen [für Anfänger]
[C#] String to char Tarnung

schlecht sehr gut
1 2 3 4 5 6 7 8 9 10
Nur angemeldete User können Snippets bewerten.