Seite 1 von 1
Zufallszahl erzeugen mit ROBO Pro
Verfasst: 15 Jul 2012, 11:23
von Jubel
Hallo,
gibt es eine Möglichkeit mit ROBO Pro Zufallszahlen zu erzeugen?
Wenn ja, wie
Hintergrund: Mein Sohn hat mit dem C64-Interface ein Pferderennen gebaut, bei dem per Zufallsfunktion (Basic-Funktion RND) gesteuert wird, welches Pferd sich wie weit nach vorne bewegt. Wir wollen dieses Modell jetzt auch mit dem ROBO TX Controller steuern.
Gruß, Christian
Re: Zufallszahl erzeugen mit ROBO Pro
Verfasst: 15 Jul 2012, 12:37
von UMueller
Hallo,
man kann natürlich auch schlicht den Random.rpp aus dem Verzeichnis RoboPro\Bibliothek\Advanced nehmen
Gruß Ulrich Müller
Re: Zufallszahl erzeugen mit ROBO Pro
Verfasst: 16 Okt 2013, 17:56
von FeuerTischler
UMueller hat geschrieben:Hallo,
man kann natürlich auch schlicht den Random.rpp aus dem Verzeichnis RoboPro\Bibliothek\Advanced nehmen
Gruß Ulrich Müller
Hallo,
Could you explain how to use the Random sub-program in the ft-Library ?
It keeps generating the same numbers everytime i run the program.
How do you make it different ?
Thanks.
Re: Zufallszahl erzeugen mit ROBO Pro
Verfasst: 19 Okt 2013, 12:24
von Dirk Fox
Hallo miteinander,
Zufallszahlen und Computer sind grundsätzlich eine Herausforderung - ein Computer arbeitet immer deterministisch (also vorhersagbar), und Zufall ist das genaue Gegenteil davon.
Zufallszahlengeneratoren in Programmen erzeugen daher normalerweise immer "Pseudozufallszahlen": Sie errechnen aus einem "Seed" (einer Quelle) "verwurstete" Werte, die idealerweise gleichverteilt aus einem gegebenen Intervall stammen. Da das "Verwursten" immer durch einen Algorithmus erfolgt, hängt die Zufälligkeit der Pesudozufallszahl vor allem an dem "Seed". Viele Computer verweden dafür einen Teil der Uhrzeit (Sekundenbruchteile) oder einen anderen, halbwegs schwer vorhersagbaren Input-Wert. Für bestimmte Anwendungen (Verschlüsselungstechnik) ist das immer noch zu schlecht, daher arbeitet man da meist mit analogen Eingabegeräten (z.B. der Mausbewegung des Benutzers) oder mit Hardware, die quasi zufällige Werte "ausspuckt" (z.B. Rauschen), und verwendet diese Daten als "Seed". Dass man anschließend die Zufallswerte mit einem Algorithmus daraus ableitet, liegt in der Regel an der Langsamkeit der "echten" Zufallsquelle (man will ja auch nicht immer mit der Maus herumwackeln).
Beim TX ist das Problem, dass er keine Uhr oder ein festes Eingabe-Device besitzt, aus dem man ein zufälliges "Seed" ableiten könnte. Daher liefert das "Random"-Unterprogramm auch beim Starten immer denselben Wert. Ein Zufallsgenerator sollte besser irgendeinen (möglichst analogen) Sensor (z.B. einen der alten Fotowiderstände) beim Start auslesen - dabei möglichst nur das niederstwertige Bit verwenden. Hat man so Bit für Bit bspw. einen 16-bit-Wert gewonnen, kann man daraus dann mit einem geeigneten Algorithmus eine gleichverteilte Zufallsfolge erzeugen. Oft werden dafür Linear Rückgekoppelte Schieberegister, LFSR (
https://de.wikipedia.org/wiki/LFSR) verwendet - sie sind schnell in Hardware und auch in Software leicht zu programmieren. Die Gleichverteilung kann man mit statistischen Tests prüfen. Wenn ihr keine hohen Anforderungen an die Verteilung und die Geschwindigkeit stellt, dann genügt es auch, den Startwert bspw. zu quadrieren und dann den Rest nach Division durch eine Primzahl als Ausgabe zu verwenden.
Beste Grüße,
Dirk