Wie funktioniert die VBA-rand Zufallszahlen mit dem upperbound-und lowerbound?

also vielleicht das ist überflüssig, vielleicht ist es wie zu Fragen, warum die meisten Menschen sind geboren mit 5 Fingern, die kurze Antwort ist am Ende immer: weil das ist, wie es ist und es funktioniert einfach, aber ich hasse es, dass Antwort und dammit ich möchte wissen, wie die Rnd () - Funktion in VBA funktioniert.

Die MSDN für Ms-Office Excel sagt, dass die RND ist definiert als:

Rnd[(number)] 'The optional number argument is a Single or any valid numeric expression.

Es geht auf zu sagen,

"Der Wert von Zahl bestimmt, wie Rnd eine Zufallszahl generiert:
jede gegebene ersten Samen, die gleiche Zahlenfolge generiert wird, da
jedem nachfolgenden Aufruf der Rnd-Funktion die Vorherige Zahl als
Startwert für die nächste Zahl in der Sequenz."

gefolgt von dieser:

Produzieren zufällige Ganzzahlen in einem bestimmten Bereich, verwenden Sie diese Formel:

Int((upperbound - lowerbound + 1) * Rnd + lowerbound)

so zum Beispiel:
Dim MyValue
MyValue = Int((6 * Rnd) + 1) ' Generate random value between 1 and 6.

Aber wie funktioniert das? wo sind diese zahlen her? warum 6 * Rnd + 1 erhalten Sie zufällige Zahl zwischen 1 und 6, aber 6 * Rnd + 5 bekommt man eine Zahl zwischen 5 und 10?

darüber hinaus, wenn es war so offensichtlich, den Machern von VBA, welche Formel zu verwenden, um erfolgreich zu engen diese nach unten, um einen bestimmten Bereich, warum nicht nur die RND-Funktion kommen optional mit Ubound und Lbound Argumente? Ich kann nicht der einzige zu sein, der Blick auf die Formel gehen, was in der Welt ist das?

Am Ende des Tages funktioniert es natürlich fein für alle meine pseudo-Zufallszahlen braucht, und vielleicht bin ich auf der Suche ein Geschenk Pferd in den Mund, aber immer noch!


BEARBEITEN


Mir fällt auf, dass diese Frage könnte sich in der Mathematik selbst. wenn du einen kleinen integer, was es mit Funktionen zu tun, die Sie anwenden, um den ganzzahligen fit in einem bestimmten Bereich.. also kann mir jemand erklären wie diese Formel funktioniert?

Die Konstante "+1" in der original-Formel gegeben werden muss, 0.5 (0.499999 wiederholen, aber w/e) Wie hat sich niemand erwähnt diese noch? Oder beweisen Sie mich falsch? Mit +1 kann dazu führen, dass Sie Runde ÜBER Ihrer Obergrenze.

InformationsquelleAutor user1759942 | 2016-07-12

Schreibe einen Kommentar