Hallo Bascom-Gemeinde,
ich bin dabei, meinen 8x8x8 LED-Würfel zum Leben zu erwecken, stoße jedoch auf Probleme bei der Verwendung der Rnd()-Funktion.
Die von mir benötigte Rnd(8)-Funktion liefert immer das gleiche, sich ständig wiederholende, Muster.
Mein Problem ist nicht, dass nach jedem Neustart die gleiche Folge an Zahlen generiert wird. Dies lässt sich ja bekanntlich durch geschickte Veränderung von ___rseed ändern.
Mein Problem ist, dass in dieser Do-Loop-Schleife
Alles anzeigen
Das Ergebnis der Simulation sieht so aus:
Rnd(1): 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Rnd(2): 1010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010
Rnd(3): 1220020021002200202010000201001010000100211002122212000111200022100111021212221201220201200110212101
Rnd(4): 3210321032103210321032103210321032103210321032103210321032103210321032103210321032103210321032103210
Rnd(5): 0101220440301403242302300011333010414340101044143210043134333400322121124220220413221422203043101130
Rnd(6): 3410501052525252105412101454341410321012303450121214145410341050321214305234143054525034543252543454
Rnd(7): 3542631550226420602336055252120106060132422160356450141320515523543123344120054623305144500530454116
Rnd(8): 7610325476103254761032547610325476103254761032547610325476103254761032547610325476103254761032547610
Rnd(9): 0258030167822711804407104877475228026737524424015126256477480760346361823304571838747026413584755450
Rnd(10): 9290347418509430301818181696363038165612529054365690983836525412301834745470765030167098149274309054
Rnd(1): ist klar, macht keinen Sinn, da der Zahlenraum ja nur auf eine Zahl beschränkt ist.
Rnd(2): nicht wirklich zufällig, da lediglich das Muster "10" ständig wiederholt wird. Es werden niemals aufeinanderfolgende Nullen oder Einsen erzeugt.
Rnd(3): sieht recht zufällig aus, ich kann jedenfalls kein Muster erkennen
Rnd(4): nicht wirklich zufällig, hier wird ständig das Muster "3210" wiederholt
Rnd(8): ebenso nicht wirklich zufällig, hier wird ständig das Muster "76103254" wiederholt
Hat jemand eine Idee, warum bei Rnd(2), Rnd(4) und Rnd(8) diese fixen Muster von jeweils 2,4 und 8 Zahlen generiert werden, aber bei allen anderen Argumenten nicht?
Hmm, 2,4,8 . . . klingt irgendwie binär . . .
Wie kann ich eine brauchbare Folge an Zufallszahlen zwischen 0 und 7 bekommen?
Besten Dank & Grüße
ich bin dabei, meinen 8x8x8 LED-Würfel zum Leben zu erwecken, stoße jedoch auf Probleme bei der Verwendung der Rnd()-Funktion.
Die von mir benötigte Rnd(8)-Funktion liefert immer das gleiche, sich ständig wiederholende, Muster.
Mein Problem ist nicht, dass nach jedem Neustart die gleiche Folge an Zahlen generiert wird. Dies lässt sich ja bekanntlich durch geschickte Veränderung von ___rseed ändern.
Mein Problem ist, dass in dieser Do-Loop-Schleife
BASCOM-Quellcode
- Do
- x = Rnd(8) 'x-Koordinate der zufällig zu bestimmenden LED
- y = Rnd(8)
- z = Rnd(8)
- Cube(y,z).x=1
- Waitms 25
- Cube(y,z).x=0
- Wait 1
- Loop
- ein fixes Muster von nur 8 Zahlen-Trippeln erzeugt wird, das sich danach ständig wiederholt. D.h. das 9. Zahlen-Trippel ist identisch mit dem 1., usw.
- Habe testweise folgenden Code im Simulator laufen lassen, der jeweils 100 Pseudo-Zufallszahlen für Rnd(1) bis Rnd(10) erzeugt:
- $regfile = "m128def.dat"
- $crystal = 16000000
- $hwstack = 64
- $swstack = 64
- $framesize = 64
- Dim W as Word
- Dim I as Byte
- Dim J as Byte
- For j= 1 to 10
- Print "Rnd(";j;"): ";
- For i=1 to 100
- w=Rnd(j)
- Print w;
- Next
- Next
- End
Das Ergebnis der Simulation sieht so aus:
Rnd(1): 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Rnd(2): 1010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010
Rnd(3): 1220020021002200202010000201001010000100211002122212000111200022100111021212221201220201200110212101
Rnd(4): 3210321032103210321032103210321032103210321032103210321032103210321032103210321032103210321032103210
Rnd(5): 0101220440301403242302300011333010414340101044143210043134333400322121124220220413221422203043101130
Rnd(6): 3410501052525252105412101454341410321012303450121214145410341050321214305234143054525034543252543454
Rnd(7): 3542631550226420602336055252120106060132422160356450141320515523543123344120054623305144500530454116
Rnd(8): 7610325476103254761032547610325476103254761032547610325476103254761032547610325476103254761032547610
Rnd(9): 0258030167822711804407104877475228026737524424015126256477480760346361823304571838747026413584755450
Rnd(10): 9290347418509430301818181696363038165612529054365690983836525412301834745470765030167098149274309054
Rnd(1): ist klar, macht keinen Sinn, da der Zahlenraum ja nur auf eine Zahl beschränkt ist.
Rnd(2): nicht wirklich zufällig, da lediglich das Muster "10" ständig wiederholt wird. Es werden niemals aufeinanderfolgende Nullen oder Einsen erzeugt.
Rnd(3): sieht recht zufällig aus, ich kann jedenfalls kein Muster erkennen
Rnd(4): nicht wirklich zufällig, hier wird ständig das Muster "3210" wiederholt
Rnd(8): ebenso nicht wirklich zufällig, hier wird ständig das Muster "76103254" wiederholt
Hat jemand eine Idee, warum bei Rnd(2), Rnd(4) und Rnd(8) diese fixen Muster von jeweils 2,4 und 8 Zahlen generiert werden, aber bei allen anderen Argumenten nicht?
Hmm, 2,4,8 . . . klingt irgendwie binär . . .
Wie kann ich eine brauchbare Folge an Zufallszahlen zwischen 0 und 7 bekommen?
Besten Dank & Grüße