2016-07-18 5 views
0

Ich bin neu in der Codierung und ich habe fest auf diesem fest.Visual Basic, neu in der Codierung. Müssen eine Liste von 100 Ganzzahlen machen eine gemischte Liste von 70 Ergebnissen erstellen

ich eine Liste in Visual Basic mit

Dim integerStable As New List(Of Integer)() 

integerStable.Add(0) 
integerStable.Add(1) 
integerStable.Add(2) 
'through to integerStable.Add(99) 

erstellt habe ich versuche, diese Liste zu halten (es kann so lange gemischt werden, da alle Nummern in der Liste im Allgemeinen zu bleiben) und eine zweite erstellen Liste, wo es nur 70 Ergebnisse von diesem Shuffle hat.

Ich brauche diese Liste, damit ich später einige Aufgaben für mich ausführen kann.

Kann mir jemand helfen, herauszufinden, wie man das macht? Denken Sie daran, ich bin neu in der Codierung, aber ich werde versuchen, mitzukommen.

Antwort

1

Einer der effizientesten Wege, um Ihre Liste erstellen würde wie folgt aussehen:

Dim integerStable As New List(Of Integer) 
For i = 1 To 100 
    integerStable.Add(i) 
Next 

Das zumindest sollten Sie eine Menge Tipparbeit sparen !!

Sie können auch wie folgt vorgehen:

Dim integerStable As New List(Of Integer) 
Dim i As Integer 
While i <= 100 
    integerStable.Add(i) 
    i += 1 
End While 

** Beachten Sie aber, dass das letztgenannte Beispiel werden Sie 101 Elemente geben als ganze Zahl zunächst auf 0 **

gesetzt

Sie müssen auch bedenken, dass Die Liste wird von 0 NOT 1 "indiziert", was eine wichtige Sache ist, die man sich merken sollte, wenn es darum geht, die Items damit zu manipulieren.

+0

Omg lol, haben Sie keine Ahnung (gut Sie könnte in der Tat), wie lange es sie alle zu schreiben hat: p Ich zumindest habe kopieren eine Menge davon einfügen, aber ich werde die alte 100 Linie gehen entfernen Liste und ersetzen Sie es durch die 4-Zeilen-Liste: D Irgendwelche Ideen, wie ich eine Liste erstellen eine neue Liste erstellen? Ich kann keine Dokumentation darüber finden. Ich brauche eine separate Liste, damit ich in Iterationen löschen und neu erstellen kann, nachdem ich die Informationen gezogen habe, ohne die ursprüngliche Liste zu korrumpieren, die in der Zukunft andere Abhängigkeiten haben wird. – envisage

+0

Könnten Sie etwas genauer erläutern, was genau Sie gerade tun und was dahintersteckt? es würde es viel einfacher machen, Sie in die richtige Richtung zu weisen. –

+0

absolut. Ich werde meine Pseudo-Code-Kommentare veröffentlichen, damit Sie es sehen können, oder ich kann Sie zu dem geteilten Projekt einladen, wenn Sie Zeit finden, es direkt anzusehen. Es ist ein Slotmaschinen-Prototyp, um meine Kenntnisse über Design zu zeigen, (aber ich habe noch keinen Code dafür, ich arbeite daran, tho!) Ok, hier geht's. Eingehende, rostige Pseudocode-Kommentare. 'Auf Klick-Taste "Spin !!!" 'alle Tasten deaktivieren. ‚aufrufen Liste‚noPlayStartSymbols‘(eine Liste von PNGs für die Schlitzposition starten. ‚5 Wiederholungen von < ‘aufrufen Liste‚100integers‘und Shuffle, Druckliste der ersten 70 Ergebnisse – envisage

0

Es kann viel einfacher sein.

Private Shared PRNG As New Random 
' 100 numbers starting at zero, in random order 
Private listOnum As List(Of Integer) = Enumerable.Range(0, 100).OrderBy(Function(x) PRNG.Next).ToList 
' list of 70 numbers from list of 100 
Private list70 As List(Of Integer) = listOnum.Take(70).ToList 

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 
    'did it work? 
    Dim ct As Integer = 1 
    For Each n As Integer In list70 
     Debug.WriteLine("{0}. {1,3}", ct, n) 
     ct += 1 
    Next 
End Sub 

Enumerable.Range nimmt zwei Argumente. Die erste ist eine Startnummer und die zweite ist eine Zählung. Im Beispiel wurde eine Liste erstellt, die mit 0 beginnt und mit 99, 100 Elementen endet. Die OrderBy hat diese Liste nur nach Zufallszahlen sortiert.

list70 wird erstellt, indem die ersten 70 Elemente von listOnum genommen werden.

Das Random, PRNG, wird auf diese Weise erstellt, so dass nur EINZIGES nur einmal initialisiert wird. Sie können viele Probleme finden, die mit der falschen Initialisierung von Random verbunden sind.

edit: Etwas andere Vorgehensweise.

Private Shared PRNG As New Random 
' 100 numbers starting at zero 
Private listOnum As List(Of Integer) = Enumerable.Range(0, 100).ToList 
' list of 70 random numbers from list of 100 
Private list70 As List(Of Integer) = listOnum.OrderBy(Function(x) PRNG.Next).Take(70).ToList 

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 
    'did it work? 
    Dim ct As Integer = 1 
    For Each n As Integer In list70 
     Debug.WriteLine("{0}. {1,3}", ct, n) 
     ct += 1 
    Next 
    'recreate list of 70 
    list70 = listOnum.OrderBy(Function(x) PRNG.Next).Take(70).ToList 
End Sub 
+0

Oh Scheiße, mein Verstand ist einfach geschmolzen. Seltsamerweise sieht es für mich korrekt aus, aber ich tue es nicht verstehe es überhaupt. :-) Ich speichere und bearbeite mein Dokument und schaue es mir in Aktion an. Vielen Dank für diese Hilfe für Sie beide. – envisage

+0

@envisage - hinzugefügt eine Erklärung, hoffe es hilft Ihrem Geist zu schmelzen;) – dbasnett

+0

@dbasnett Das ist ein interessanter Ansatz. Aber wie zufällig ist es? Ich habe gerade mit Linqpad gespielt (wirklich wunderbar als schnelle Testumgebung) und habe festgestellt, dass die gleichen Zahlen in der gleichen Reihenfolge auftauchen. –

Verwandte Themen