Die Funktion "Rnd" in VBA (Die Funktion "Rnd" in VBA), Lektion, Seite 724373
https://www.purl.org/stefan_ram/pub/rnd_vba (Permalink) ist die kanonische URI dieser Seite.
Stefan Ram
VBA-Kurs

Die Funktion ›Rnd‹ in VBA 

Einfache Verwendung

Der Aufruf »Rnd()« liefert eine Zufallszahl zwischen «0!» (einschließlich) und «1!» (ausschließlich) vom Typ ›Single‹.

Der Ausdruck »rnd()+rnd()/2^23« sollte daher eine Zufallszahl zwischen «0#» (einschließlich) und «1#» (ausschließlich) vom Typ ›Double‹ ergeben.

Man kann sich vorstellen, daß die VBA-Implementation eine Liste von insgesamt 16777216 (2^27) verschiedenen Zufallszahlen hat und jeder Aufruf »Rnd()« eine Zufallszahl aus jener Liste ergibt und den Zufallszahlengenerator dann zur nächsten Zahl in der Liste voranstellt (falls der Zufallszahlengenerator sich schon bei der letzten Zahl der Liste befand wird er wieder auf die erste Zahl gestellt).

Verwendung mit positivem Argument

Ein Aufruf wie »Rnd( 2 )« mit einem positiven Argument hat dasselbe Verhalten wie der Aufruf »Rnd()« ohne Argument.

Das Verhalten  eines Aufrufs besteht aus dessen Wert und dessen Wirkung.

Verwendung mit dem Argumentwert «0»

Ein Aufruf wie »Rnd( 0 )« mit dem Argumentwert «0» hat denselben Wert, wie ihn der direkt vorangehende Aufruf von »Rnd()« hatte.

(Hierzu nehmen wir an, daß nach dem Start der VBA-Implementation vor der Ausführung der ersten Anweisung einmal intern »Rnd()« aufgerufen wurde. Wenn »Rnd( 0 )« also direkt nach dem Start der VBA-Implementation ausgewertet wird, ergibt sich der Wert jenes internen Aufrufes.)

Verwendung mit einem negativen Argumentwert

Ein Aufruf wie »Rnd( -1 )« mit einem negativen Argumentwert positioniert den Zufallszahlengenerator an einer durch den Argumentwert bestimmten Stelle der Liste der insgesamt 16777216 (2^27) verschiedenen Zufallszahlen. Auf diese Weise läßt sich eine ganz bestimmte Folge von Zufallszahlen abrufen.

(Beim Start der VBA-Implementation wird praktisch einmal »Rnd(-16184694)« ausgewertet.)

»RANDOMIZE« ohne Argument

Der Aufruf von »RANDOMIZE« ohne Argument positioniert den Zufallszahlengenerator an einer zufälligen (eigentlich: durch die aktuelle Uhrzeit bestimmten) Stelle in der Liste der möglichen Zufallszahlen.

»RANDOMIZE« kann am Anfang eines Programms einmal aufgerufen werden, um nicht immer wieder die gleiche Liste von Zufallszahlen zu erhalten. Dabei sollte diese Funktion aber nur einmal am Anfang eines Programmes aufgerufen werden und nicht etwa vor jedem Aufruf von ›Rnd‹!

»RANDOMIZE« wählt eine von nur 65536 verschiedenen Positionen in der Liste der Zufallszahlen aus. Um noch mehr Variationen zu erhalten, könnte man nun noch einige Aufrufe von ›Rnd‹ folgen lassen, deren Anzahl durch die Uhrzeit oder etwas Ähnliches bestimmt ist.

RANDOMIZE‹ mit Argument

Der Aufruf von ›RANDOMIZE‹ mit einem numerischen Argument positioniert den Zufallszahlengenerator an einer Stelle in der Liste der möglichen Zufallszahlen, die von dem Argumentwert und der derzeitigen Stelle in der Liste abhängt.

Ein Aufruf von ›RANDOMIZE‹ mit einem bestimmten Zahlenwert kann also im allgemeinen nicht verwendet werden, um den Zufallszahlengenerator wieder auf dieselbe Stelle einzustellen wie bei einem vorherigen Aufruf von ›RANDOMIZE‹ mit demselben Zahlenwert. Hierfür sollte vielmehr ein Aufruf von ›RND‹ mit einem negativen Zahlenwert verwendet werden. Der Aufruf von ›RANDOMIZE‹ mit einem bestimmten Zahlenwert sollte nur in ganz wenigen Fällen angebracht sein, normalerweise sollte man ihn nicht verwenden.

 

Seiteninformationen und Impressum   |   Mitteilungsformular  |   "ram@zedat.fu-berlin.de" (ohne die Anführungszeichen) ist die Netzpostadresse von Stefan Ram.   |   Eine Verbindung zur Stefan-Ram-Startseite befindet sich oben auf dieser Seite hinter dem Text "Stefan Ram".)  |   Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten. Diese Seite ist eine Veröffentlichung von Stefan Ram. Schlüsselwörter zu dieser Seite/relevant keywords describing this page: Stefan Ram Berlin slrprd slrprd stefanramberlin spellched stefanram724373 stefan_ram:724373 Die Funktion "Rnd" in VBA Stefan Ram, Berlin, and, or, near, uni, online, slrprd, slrprdqxx, slrprddoc, slrprd724373, slrprddef724373, PbclevtugFgrsnaEnz Erklärung, Beschreibung, Info, Information, Hinweis,

Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten. Diese Seite ist eine Veröffentlichung von Stefan Ram.
https://www.purl.org/stefan_ram/pub/rnd_vba