Feedback

VB - Zufallszahl erzeugen (mit Prüfung)

Veröffentlicht von am 11/27/2007
(3 Bewertungen)
Eine Zufallszahl erzeugen, wo man den Minimal-Wert und den Maximal-Wert angibt. Diese Funktion prüft auch, ob das Ergebnis zwischen den angegebenen Werten liegt.
Public Function GetRandom(ByVal minimum As Integer, ByVal maximum As Integer) As Integer
        Try
            Dim nRandom As Integer

            Randomize()
            nRandom = CInt(minimum + (maximum - minimum + 1) * Rnd())

            While nRandom < minimum OrElse nRandom > maximum
                Randomize()
                nRandom = CInt(minimum + (maximum - minimum + 1) * Rnd())
            End While

            Return nRandom
        Catch ex As Exception
            'ToDo Fehlerbehandlung
            Return minimum
        End Try

    End Function
Abgelegt unter Random, Zufall.

3 Kommentare zum Snippet

Thomas G, Liesner schrieb am 11/27/2007:
Entweder die Formel stimmt - dann ist die While-Schleife Unsinn - oder nicht, dann sollte sie korrigiert werden. Randomize initialisiert anhand der aktuellen Uhrzeit und sollte genau einmal im Programm aufgerufen werden, aber garantiert nicht vor jeder Rnd-Verwendung. Und die Exceptionbehandlung ist ein Witz - wenn bei Rnd und Randomize ein Laufzeitfehler auftritt, sollte das vom Restprogramm schon bemerkt werden und wenn die Variablentypen zu klein sind, dann ist eine Meldung genauso angebracht. Aber heimlich den Minimalwert zurückzuliefern, ist die denkbar schlechteste Möglichkeit. Eine Reduktion des Codes auf die Zeile
CInt(minimum + (maximum - minimum + 1) * Rnd()
wäre noch die sinnvollste Verwendung, wobei ich jetzt nicht auf +/-1-Fehler geprüft habe.
Tim Hartwig schrieb am 11/28/2007:
Mensch Steffen erst so ein super Snippet dann sowas xD
Thilo Weihsbach schrieb am 9/30/2011:
Hi,

bei mir wird bei dieser Funktion immer nur der minimum Wert ausgegeben. Wie kommt das?
 

Logge dich ein, um hier zu kommentieren!