PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : "zufällige" zahlen in Bascom



mrg
28.06.2007, 16:22
Einen wunderschönen guten Morgäääähn!!

Ich hab da einen konflikt mit den "zufallszahlen" in Bascom.
Daß es kein richtigen zufallszahlen sind is mir bewußt.
Damit kann ich leben,es spielt keine rolle.
Womit ich aber NICHT leben kann,is die tatsache daß wenn ich RND(2)
oder RND(10) verwende,nicht zwangsläufig eine zahl in diesem beireich rauskommt.
Es ist vielmehr so,daß des öfteren (zu oft) werte jenseits von 200 rauskommen.
Erschwerend hinzu kommt,daß ich so gut wie nie eine gerade zahl habe.
Ich versuche eine halbwegs gleichmäßige verteilung von scheinbar zufälligen bewegungen in 2 richtungen zu erzeugen.
ich hab das derweilen so gelöst,daß ich eben eine zahl von 0 bis 9 wähle.
ist die zahl gerade,so setze ich coil_dir =1.
is sie ungerade,dann eben coil_dir = 0.
ich bekomme zu etwa 90% ungerade werte,welche wie gesagt häufig auch über dem angegebenen maximum wert liegen.

Muß ich echt eine tabelle mit bewegungen vorgeben,oder kann mir jemand sagen,wieso das so is?
eventuell läuft das ja auf dem Mega8 dann auch richtig,nur im simulator passt mir das gar nicht.

Zusätzlich zur richtung entscheiden auch zufallszahlen über geschwindigkeit des aktors.
hier verwende ich RND(256).
Die werte welche die function zurückliefert liegen IMMER im angegebenen Bereich,und sind gleichzeitig die werte für einen PWM Kanal.

Wie kann das sein?

Die function RND wird in einer timer sub aufgerufen,etwa alle 1,2 sekunden.(laut simulator)

Ich bedanke mich jetzt schon für die vielen Antworten,prall gefüllt mit know-how's die ich erhalten werde.

Schließlich is das hier das beste Forum wo gibt.

MfG,
--> Mr.G.

stefan_Z
04.07.2007, 12:44
Ja, die RND() Funktion is eher mal schlapp... Wiederholt sich oft und nicht nicht besonders zufällig.
Ich behelfe mir immer mit der Neudifinition von ___rseed -> s. Handbuch! Zufallszahlen generieren, benutzen, ___rseed neu setzen, usw.
Ist zumindest ein wenig zufälliger....