Hallo, alle zusammen.For-Schleife funktioniert nicht richtig, wenn ich Msgbox innerhalb der Schleife hinzufügen
Ich habe kleines Problem, ergab überhaupt keinen Sinn. Ich habe also eine einfache Schleife. Ich möchte zufällige Integer erstellen und den Index eines bestimmten Arrays durch diese ganze Zahl entfernen.
Arbeiten perfekt:
For i = 1 To CInt(rastgelesoru.Text)
Dim Rand As New Random()
Dim xIndex As Integer = Rand.Next(0, AList.Count - 1)
Dim SelectedValue = AList(xIndex)
Dim eklepanelrnd As Panel = CType(containerpanel.Controls(SelectedValue), Panel)
If eklepanelrnd.Tag = "1" Then
MsgBox(xIndex)
containerpanelrastgele.Controls.Add(eklepanelrnd)
End If
AList.RemoveAt(xIndex)
Next
Zum Beispiel habe ich 500 Element in Array. Wenn ich eine Nachrichtenbox wie oben hinzugefügt habe, funktioniert es perfekt. Ich bekomme Zufallszahlen. (100,65,355,27,472 letzte Ausgabe für 5). Aber wenn ich msgbox Zeile entferne, bekomme ich jedes Mal fortlaufende Nummern. Zuerst dachte ich, es könnte wirklich 'zufällig' sein, aber nein. Jedes Mal, wenn ich Konsekutivpersonen bekomme. (23,24,25,160,161 letzte Ausgabe für 5 ohne msgbox Linie.)
Nicht richtig funktioniert ohne msgbox Linie.
For i = 1 To CInt(rastgelesoru.Text)
Dim Rand As New Random()
Dim xIndex As Integer = Rand.Next(0, AList.Count - 1)
Dim SelectedValue = AList(xIndex)
Dim eklepanelrnd As Panel = CType(containerpanel.Controls(SelectedValue), Panel)
If eklepanelrnd.Tag = "1" Then
containerpanelrastgele.Controls.Add(eklepanelrnd)
End If
AList.RemoveAt(xIndex)
Next
Erstellen Sie keine zufälligen Objekte in Ihrer Schleife, sondern erstellen Sie nur eine. Also bewegen Sie Dim Rand als neue Random() 'vor der Schleife. –
@AlexB. Oh lustig, wie einfach es ist. Arbeiten jetzt danke. Aber könnten Sie bitte mehr erklären? Ich würde gerne wissen, warum ich nicht das gleiche Problem hatte, wenn ich msgbox in Schleife hatte. –
Im Grunde ist es wegen .NET berechnet Zufallszahlen mit einem [Zufallsgenerator] (http://en.wikipedia.org/wiki/Pseudorandom_number_generator). Dies bedeutet, dass die Zahlen mit einem deterministischen Algorithmus erzeugt werden und somit nicht zu 100% zufällig sind. Eine gängige Methode, diese statistischen Ergebnisse zu verschleiern, besteht darin, den aktuellen Zeitstempel zu berücksichtigen. In Ihrem Beispiel mit MsgBox sind die Zeitstempel eher unterschiedlich, weil Sie das Fenster zuerst schließen müssen, wobei in Ihrem zweiten Beispiel der Zeitstempel zwischen den zufälligen Objekten fast identisch ist. –