Array aus Zufallszahlen erstellen ohne doppelte Werte

DAM

Grünschnabel
Hallo zusammen,

leider hat mir die Suchen-Funktion keine sinnvollen Ergebnisse geliefert. Deshalb poste ich meine Frage mal hier.Es ist glaub ich erwähnenswert, dass ich noch ein ziemlicher Anfänger bin.

Ich möchte aus einer vorgegeben Zahlenmenge nach dem Zufallsprinzip eine kleinere Zahlenmenge auswählen. Z. B. möchte ich 500 Zahlen haben, die zwischen 0 und 1000 liegen. Das habe ich auch mit folgender Lösung geschafft.

Code:
Dim i As Integer
Dim Anzahl_gesamt As Integer =1000
Dim Anzahl_zufall As Integer = 500
Dim Random(Anzahl_zufall) As Integer

For i=0 to Anzahl_zufall

Randomize()
Random (i) = Cint(Int(Rnd()*Anzahl_gesamt))

next

Mein Problem ist, dass dabei keine Zahl doppelt vorkommen darf.
Ich finde keine vernünftige Lösung sicherzustellen, dass mein erzeugtes Array wirklich aus 500 verschiedenen Zufallszahlen besteht.

Ich habe folgendes versucht, aber das klappt beim durchrechnen nicht, obwohl keine Fehlermeldung auftaucht.

Code:
Dim Anzahl_gesamt As Integer =1000
Dim Anzahl_zufall As Integer =500
Dim Random(Anzahl_zufall) As Integer
Dim i,k As Integer

For i = 0 To Anzahl_zufall
                Randomize()
                Random(i) = CInt(Int(Rnd() * Anzahl_gesamt))

                For k = 0 To i

                    Do Until k = i

                        Do While Random(i) <> Random(k)

                            Randomize()
                            Random(i) = CInt(Int(Rnd() * Anzahl_gesamt))

                        Loop

                    Loop

                Next
            Next

Vielleicht kann mir ja jemand helfen.

Viele Grüße
 
Zuletzt bearbeitet:
Es ist dasselbe wie das "Lotto-Problem": Ziehen von x Kugeln aus n verfügbaren Kugeln ohne zurücklegen und Berücksichtigung der Reihenfolge.

Ist ein Thema der Kombinatorik. Sollte es eigentlich genügend Algorythmen im Netz geben.

Habe auf die schnelle das hier gefunden: http://www.paradoxes.info/code/LottoClass.html


P.S.: Dein Code sieht sehr nach .NET aus, also bitte auch im richtigen Forum fragen in Zukunft
 
Moin,

vielen Dank an euch. Ihr habt mir sehr geholfen. Habe das Problem jetzt gelöst. Ich wollte nicht unbedingt die ganze Lottoklasse von Zvonis Link miteinbinden. Deshalb habe ich mich an vbarchiv.net gehalten. Klappt alles super jetzt.

Ja ich arbeite mit .NET und es tut mir Leid, dass ich das falsche Forum erwischt habe. War nicht mit Absicht. Vielleicht will ein Mod das Thema ja noch verschieben...

Nochmals vielen Dank und schöne Grüße!
 

Neue Beiträge

Zurück