Clever-Excel-Forum

Normale Version: Zufallszahlen erzeugen - doppelte Zahlen vermeiden
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo liebe VBA Gemeinde,

ich brauche eure Hilfe. Ich möchte Zufallszahlen erzeugen. Eine einfache Methode wäre dies über folgende Funktion zu tun:


Code:
Dim z as Integer
For i = 10 to 1 Step -1
z = Int (i *RND + 1)
Next i

Mit diesem Code werden 10 Zufallszahlen erzeugt. Allerdings ist es möglich, dass innerhalb dieser Menge einige Zahlen doppelt oder dreifach vorkommen. Andere dafür
dann wieder überhaupt nicht. Ich bräuchte einen Code der derart mischt, dass jede Zahl innerhalb der vorgegebenen Menge immer nur einmal vorkommt. Wie mache ich das?

Danke für eure Hilfe
Hi,

(03.03.2015, 14:01)SonjaFido schrieb: [ -> ]Mit diesem Code werden 10 Zufallszahlen erzeugt. Allerdings ist es möglich, dass innerhalb dieser Menge einige Zahlen doppelt oder dreifach vorkommen. Andere dafür dann wieder überhaupt nicht. Ich bräuchte einen Code der derart mischt, dass jede Zahl innerhalb der vorgegebenen Menge immer nur einmal vorkommt. Wie mache ich das?

Du willst also 10 Zufallszahlen aus dem Zahlenraum 1-10 haben, ohne doppelte?

Dann kannst Du, ohne eine Formel zu benutzen, auch die Zahlen 1 - 10 einfach so hinschreiben. Angel
Auch Hallo,

in VBA kannst Du das z.B. so machen.

Die Zahlen 1 bis 10 in ein Array schreiben, eine Zufallszahl 1...10 ziehen, das Array-Element mit diesem Index nehmen.

Dieses Array-Element mit dem letzten Array-Element überschreiben. Eine Zufallszahl 1...9 ziehen ...

cu, Bernd
--

Code:
Option Explicit


Sub x()
   Dim a, b(1 To 10) As Integer, i As Integer, j As Integer
   
   a = [transpose(row(1:10))]
   
   Randomize
   For i = 10 To 1 Step -1
      j = Int(i * Rnd() + 1)
      b(i) = a(j)
      a(j) = a(i)
   Next
   
   Cells(1, 1).Resize(, 10) = b
End Sub
Hallo,

hier gibt es einen Lottozahlengenerator, der macht sowas:

http://www.clever-excel-forum.de/Thread-...zahlen-VBA

und hier auch noch was:

http://www.clever-excel-forum.de/Thread-...generieren