Wiederholen zufällige Variablen in VBA
Wie kann ich mit randomize und rnd um eine sich wiederholende Liste von zufälligen Variablen?
Durch Wiederholung der Liste, ich meine, wenn Sie laufen einer Schleife 10 Zufallszahlen, jedes zufällige Zahl in der Liste eindeutig sein. Darüber hinaus, wenn Sie zu laufen waren diese Sequenz wieder, Sie bekommt die gleichen 10 zufällige zahlen als zuvor.
Erläutern Sie auf "wiederholen-Liste".
InformationsquelleAutor sooprise | 2010-05-21
Du musst angemeldet sein, um einen Kommentar abzugeben.
Aus der Microsoft-eigenen Mund:
Sehen hier für details.
Den gesamten Abschnitt:
Bemerkungen
Den
Rnd
- Funktion gibt einen Wert kleiner als 1, aber größer als oder gleich null ist.Den Wert von Zahl bestimmt, wie
Rnd
generiert eine zufällige Nummer:Für 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.Bevor Sie
Rnd
verwenden Sie dieRandomize
- Anweisung ohne argument initialisiert den Zufallszahlen-generator mit der ein Ausgangswert basierend auf der system-timer.Produzieren zufällige Ganzzahlen in einem bestimmten Bereich, verwenden Sie diese Formel:
Hier, upperbound ist die höchste Zahl in der Reihe, und die Untergrenze ist die niedrigste Zahl in der Reihe.
Hinweis wiederholen Sie die Sequenzen von Zufallszahlen, rufen Sie Rnd mit einem negativen argument unmittelbar vor der Verwendung
Randomize
mit einem numerischen argument. Verwenden von Randomize mit demselben Wert für Zahl nicht wiederholen Sie den vorherigen Sequenz.Beispiel, wenn Sie fügen Sie diesen code in Excel, erzeugt es eine unterschiedliche Anzahl jedes mal, wenn Sie es ausführen:
Jedoch, wenn Sie die Auskommentierung der
x = Rnd(-1)
Zeile generiert die gleichen Zahl bei jedem Lauf.Beachten Sie, dass Sie zu tun haben zwei Dinge. Rufen Sie
Rnd
mit einem negativen argument und nennenRandomize
mit einem bestimmten argument. Ändern Sie entweder diese Dinge geben Ihnen einen anderen Samen (und daher ist die Reihenfolge).Edit:
Re Ihr Kommentar:
Müssen Sie jetzt ein weiteres Stück von Informationen. Was Sie fordern, ist keine zufällige zahlen, sondern eine shuffling-Algorithmus. Ich Verweise Sie auf eine frühere Antwort, die ich gab, wie dies zu tun hier. Alles, was Sie tun müssen, ist, kombinieren Sie die schlurfenden Algorithmus mit der Saatgut-Einstellung oben detailliert beschrieben, und Sie werden Ihr wiederholbare, einzigartige Sequenz.
Und hier ist ein code, der zeigt es in Aktion. Jede Ausführung dieser subroutine wird die Sequenz
4 1 5 6 2 3 7 10 9 8
also ich denke, das ist, was Sie wurden, nachdem ein repetable, "random", einzigartige Sequenz. Wenn du wollte erzeugen zu können, verschiedene Sequenzen (aber immer noch in einer wiederholbaren Art und Weise), müssen Sie nur ändern Sie den Wert für dieRandomize
.das macht Sinn, wenn ich falsch verstanden habe, nochmal 🙂 ich habe aktualisiert die Antwort mit neuen Informationen basierten auf diesen Kommentar.
+1, Weil ich bin dankbar, dass ich in der Lage bin, passen diese auf meine Bedürfnisse trotz der, wie es funktioniert, die über meinen Kopf. Ich kann nicht sagen, was Los ist, nachdem es fügt
"Values:"
zus
. Oder, naja, davor auch, aber das ist die "number crunching" Teil, der die wichtigsten für das Verständnis. Ich wünschte, ich konnte sehen, wie die "Evaluate Formula" entsprechende Schritt für Schritt-Prozess, der für diese/VBA im Allgemeinen.es ist bekannt als Fisher-Yates shuffle und mehr detail auf, wie es funktioniert, finden Sie auf den angegebenen link in die Antwort (stackoverflow.com/questions/1858610/...) oder durch die Suche nach diesem Begriff. Der link geht Schritt für Schritt die shoould hoffentlich helfen.
Ich hatte gelesen, dass ein paar mal vor meinem Kommentar und es machte immer noch meine Augen zu überqueren, aber ich glaube, dass ist wegen meiner Mangel visualisieren von arrays. Ich bin noch nicht mit Ihnen vertraut genug, um in der Lage zu "arbeiten" mit Ihnen in "meinem" memory haha...aber es gab mir eine gute Plattform, um den stand auf, und zusammen mit dieser pfiffigen Seite und ich glaube, ich habe es jetzt, danke. 🙂 [Ich weiß, das ist ein bisschen "geschwätzig", aber ich bin hinzufügen, hier einen link zu, welche Ergänzungen die Antwort, so hoffe ich chat gerne mods lassen das hier...]
InformationsquelleAutor paxdiablo