Tipp-Upload: VB.NET 0158: Zufällige Reihenfolgen generieren
von Spatzenkanonier
Über den Tipp
Dieser Tippvorschlag ist noch unbewertet.
Der Vorschlag ist in den folgenden Kategorien zu finden:
- Algorithmen
Dem Tippvorschlag wurden folgende Schlüsselwörter zugeordnet:
Sort,unsort,list,ilist,shuffle
Der Vorschlag wurde erstellt am: 16.12.2007 10:09.
Die letzte Aktualisierung erfolgte am 25.01.2009 12:53.
Beschreibung
Die Methode "Shuffle" stellt in einer Auflistung eine zufällige Reihenfolge her.
Indem der Algorithmus auf das IList-Interface angewendet wird, können Arrays beliebiger DatenTypes, List(Of T) und einige weitere Auflistungsarten bedient werden können.
Anmerkung: Die Random-klasse generiert natürlich nur Pseudo-Zufalls-Zahlen, die einem Algorithmus folgen, der eine natürliche Zufalls-Verteilung nachahmt.
Der Shuffle-Methode ist eine Übertragung dieses C#-Codes
Schwierigkeitsgrad |
Verwendete API-Aufrufe: |
Download: |
' Dieser Source stammt von http://www.activevb.de ' und kann frei verwendet werden. Für eventuelle Schäden ' wird nicht gehaftet. ' Um Fehler oder Fragen zu klären, nutzen Sie bitte unser Forum. ' Ansonsten viel Spaß und Erfolg mit diesem Source! ' ' Beachten Sie, das vom Designer generierter Code hier ausgeblendet wird. ' In den Zip-Dateien ist er jedoch zu finden. ' ------------- Anfang Projektgruppe Unsort.sln ------------- ' ------------ Anfang Projektdatei Unsort.vbproj ------------ ' ----------------- Anfang Datei modMain.vb ----------------- ' Projekteinstellungen: ' Option Explicit On ' Option Strict On ' Imports System ' Imports Microsoft.VisualBasic.ControlChars Imports System.Collections Public Module modMain Public Sub Main() While True ' Ein String-Array erstellen Dim words As String() = "Das ist das Haus vom Ni ko laus.".Split(" "c) Console.WriteLine(String.Join(" "c, words)) Shuffle(words) Console.WriteLine(String.Join(" "c, words) & Lf) Console.Write("Nochmal? [y] ") If Console.ReadKey.KeyChar <> "y"c Then Return Console.WriteLine(Lf) End While End Sub Private Sub Shuffle(ByVal lst As System.Collections.IList) Static rnd As New Random() For i As Integer = 1 To lst.Count - 1 Swap(lst, i, rnd.Next(i + 1)) Next End Sub Public Sub Swap(ByVal lst As IList, ByVal i1 As Integer, ByVal i2 As Integer) Dim tmp As Object = lst(i1) lst(i1) = lst(i2) lst(i2) = tmp End Sub End Module ' ------------------ Ende Datei modMain.vb ------------------ ' ------------- Ende Projektdatei Unsort.vbproj ------------- ' -------------- Ende Projektgruppe Unsort.sln --------------
Diskussion
Diese Funktion ermöglicht es, Fragen, die die Veröffentlichung des Tipps betreffen, zu klären, oder Anregungen und Verbesserungsvorschläge einzubringen. Nach der Veröffentlichung des Tipps werden diese Beiträge nicht weiter verlinkt. Allgemeine Fragen zum Inhalt sollten daher hier nicht geklärt werden.
Folgende Diskussionen existieren bereits
Um eine Diskussion eröffnen zu können, müssen sie angemeldet sein.