Wie generiere ich in Excel 11-stellige Zufallszahlen ohne doppelte Werte?

5 Antworten

Je nachdem, ob führende Nullen erlaubt sind oder nicht kommen da so um die 90 Milliarden Möglichkeiten zusammen.

Wie viele Zufallszahlen bauchst Du denn? Wahrscheinlich ist die einzige Möglichkeit, eine Liste anzulegen mit den bereits gezogenen Zahlen und dann jeweils zu prüfen, ob die neue Zahl schon einmal da war - was am Anfang recht unwahrscheinlich ist.

Enrico87 
Fragesteller
 09.09.2020, 18:32

Hallo Hannes,

danke für deine Antwort. Tatsächlich ist es egal wie die Zahlen aussehen, führende Nullen sind also kein Problem. Ich benötige 50.000 Zahlen.

1

Hi,

Das geht meines Erachtens in der Größenordnung nur mit VBA. Probier doch mal folgendes Makro:

Sub Randoms()
Dim i, j As Long
Dim Duplicate As Boolean
Dim LastDraw As LongLong
i = 1
While i <= 50000
    Cells(i, 2) = Int(Rnd() * 100000000000#) + 1
    LastDraw = Cells(i, 2)
    Duplicate = False
    For j = 1 To i - 1
        If Cells(j, 2) = LastDraw Then Duplicate = True
        Exit For
    Next
    If Duplicate = False Then i = i + 1
Wend
End Sub

So läuft das auf 64bit Systemen. Auf 32bit Systemen gibt es den Datentyp LongLong nicht. Dann müssten wir das noch ein bisserl anpassen.

Auf meinem betagten Macbook braucht das Makro ca. 5 Sekunden für die 50000 Zufallszahlen. Ich habe einen Durchlauf geprüft, es waren keine Doppelten dabei - sollten es ja auch eigentlich nicht.

Kommst Du damit klar oder brauchst Du Hilfe mit VBA?

Ich würde die einfache ZUFALLSBEREICH-Funktion wählen.

=ZUFALLSBEREICH(10000000000;99999999999)

Dass eine Zahl doppelt vorkommt, wird bei 11stelligen Zahlen unwahrscheinlich sein.

Die VBA Lösung ist gut aber auch ohne VBA, die von Suboptimierer.
Seine Formel nehmen und in Excel bis zur Zeile 50000 Kopieren.
Danach den Bereich auf Doppelte Prüfen. (und ggf entfernen lassen. Im Menu "Daten" möglich)
Hast du immer noch 50000 verschiedenen=>fertig
Sind doppelte weg, dann die Zeilen bis 50000 wieder mit der Formel auffüllen.
Wiederholen, bis 50000 verschiedene vorhanden sind.

Da müsste ja ein Bereich existieren, in der benutzte 11-stelligen Zahlen stehen. Dann kann man für neu generiete Zahel auf Dubletten prüfen und verwerfen, falls die schon vorhanden wäre. Ein Zufallsgenerator für 11-Stellige Zahlen müsste auch realisiert werden können.