Hi, wie kann ich mit einem PIC 16F630 (Pseudo-) Zufallszahlen erzeugen? Am besten ohne äussere Beschltung also nur durch Zuhilfenahme von Assembler code? Ich habe schon gesucht aber nichts gefunden. ...warscheilich weil es unmöglich ist? Oder?
Hi, > wie kann ich mit einem PIC 16F630 (Pseudo-) Zufallszahlen erzeugen? Am > besten ohne äussere Beschltung also nur durch Zuhilfenahme von Assembler > code? Ich habe schon gesucht aber nichts gefunden. > ...warscheilich weil es unmöglich ist? > Oder? Eher weil du nicht Suchen kannst. Du willst doch nicht ernstaft behaupten, dass Goolge unter "Pseudozufallszahlen" nichts findet, was sich verwerten lässt, oder? :) Du wird halt immer das Problem mit dem Startwert des PRNG haben, der muss irgendwo her kommen und sollte immer ander sein - sonst komme immer die gleichen Zahlen raus. Axel
Danke schon mal Axel. Wie man Zufallszahlen generell erzeugt ist mir schon klar. Auf PCs unter C ist es ja auch gar kein Problem. Aber soetwas für PICs zu machen in Assembler wobei man nur 35 verschiedene Befehle zur Verfügung hat... " Du wird halt immer das Problem mit dem Startwert des PRNG haben, der muss irgendwo her kommen und sollte immer ander sein - sonst komme immer die gleichen Zahlen raus. " Das war ja gerade meine Frage. Wobei du auch nicht so toll den Plan hast, oder? Wenn man schon immer andere (zufällige) Startwerte hat, dann hat man ja sein Ziel schon erreicht. Aus einer zufälligen Zahl eine neue Zufällige Zahl zu generieren ist meines erachtens nach sinnlos. Es sei den man generiert eine ganze Reihe. Also die Frage ist immernoch: wie bekommt man einen zufälligen Startwert hin?
> Das war ja gerade meine Frage. Wobei du auch nicht so toll den Plan > hast, oder? Wenn man schon immer andere (zufällige) Startwerte hat, dann > hat man ja sein Ziel schon erreicht. Aus einer zufälligen Zahl eine neue > Zufällige Zahl zu generieren ist meines erachtens nach sinnlos. Es sei > den man generiert eine ganze Reihe. Aus einer zufälligen Zahl eine neue zufällige Zahl zu generieren ist gar nicht so trivial, wie das erscheint. Daran sind schon viele gescheitert, denn am Ende waren die Zahlen dann bei weitem nicht so zufällig, wie sie sein sollten. > Also die Frage ist immernoch: wie bekommt man einen zufälligen Startwert > hin? Mal anders geftagt: was willst du denn eigentlich machen. Letztlich kommt es sehr drauf an, wie gut die Zufallszahlen werden sollen und was schlimmstenfalls passiert, wenn jemand tatsächlich drauf kommt, welche Zahl als nächstes erzeugt wird. Wenn du einen guten PRNG-Algorithmus hast, dann kann der Startwert pro Benutzung auch einfach um eins hochgezählt werden, ohne dass das den Zufallszahlen gross schadet. Setzt halt voraus, dass man ein EEPROM/FLASH oder so hat, wo man den Wert immer wieder Ablegen kann. Dann muss das ganze nur ein einziges einmal initialisiert werden (und ggf eine Runden laufen, damit keinr mehr weiss, bei welchem Wert man jetzt ist) und ab da wird das Ding bis zum Lebensende Zufallszahlen erzeugen können. Ohne EEPROM/FLASH könntest du z.B ab dem Start einen Zähler laufen lassen, der dann als Startwert verwendet wird, wenn ein gewisses Ereignis eintritt. Kann man z.B gut machen, wenn man auf "Knopfdruck" eine Zufallszahl brauchst. Also, sag mal, was du eigentlich machen willst....
Hi Axel, danke für deinen Beitrag. Das mit dem PRNG-Algorithmus klingt schon interessant. Ich werde mal danach suchen. Die Frage ist wie kompliziert dieser denn ist. So viel Rechenleistung und Speicher hat der PIC nicht. EEROM ist aber vonhanden. Der Grund des ganzen ist wie immer meine Neugier.
Hi, Viele PRGNs basieren letztlich auf einem rückgekoppelten Schieberegister. Und das bekommst jeder einfacher uC problemlos hin. Wenn du natürlich den sichereren ANSI-DES-RNG nehmen willst, dann wird es auswendiger...
Yo, entweder einen Random-Seed nehmen (Zähler, RTC), oder den letzten Wert irgendwo onchip in einem NV-Bereich schreiben (maximale Anzahl Schreibzyklen beachten). Wie Axel schon schreibt, der Aufwand hängt mit dem Anspruch zusammen...
Danke an euch alle. Ich denke ich mache es wie in den links beschrieben! Ciao
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.