Hallo, möchte Zufallszahlen einsetzen - aber wie. DA-Wandler brauche ich - kann ich nicht verwenden. Bisher habe ich Zufallszahlen im SRAM "gesammelt" (z.B. beim Verändern des AD-Wertes Timer auslesen) Bin über alle Erfahrungen damit dankbar. Gruß Jens-Erwin
assembler, c oder welche sprache? in c gibts dafür funktionen, in codevision z.B. int rand (void) generates a pseudo-random number between 0 and 32767.
Hallo, Ich programmiere nur in Assembler. Ich könnte mir ja mal den C-Code anschauen.
Mhmmm .... du könntest einen Timmer immer Laufen lassen, und wenn du den Zufallswert benötigst liest du ihn einfach aus. Ist zwar, nicht wirklich "Zufall" ... aber sollte für die meisten Anwendungen (außer aufwendige Verschlüsselung, etc.) ausreichend sein! mfG Alex
Hi, einfach mal nach "Zufallszahlen" und "Schieberegister" googeln. Schieberegisterimplementation in Assembler ist das einfachste und schnellste, anstatt Modulo-Operationen. Olli
Hallo, Ich probiere das mal mit dem Schieberegister. Timer einfach irgendwann auslesen geht natürlich nicht, da ja alles wirklich präzise abläuft und genau um das irgendwann geht es ja. Wann soll ich ihn also auslesen?
Hier im Forum habe ich meine GLCD Sourcen gepostet. Diese Sourcem enthalten auch einen SG-LFSR in Assembler. Dies ist ein sogenanntes Lineares Feedback Shift Register als Shrinking Generator. Seine Periode beträgt 2^63-2 Bits, ist also bei weitem ausreichend. Enthalten sind auch jeweils 1000 vorberechnete nicht reduzierbare Polynome, die ebenfalls sehr wichtig sind, damit sie die mathematischen Eigenschaften eines LFSR auch ergeben. Der Source selber dürfte in ASM sehr leicht zu adaptieren sein, und umfasst 72 Bytes Code. Wichtig ist auch das zB. die BasicCard Cryptokarten diesen Algo. als Verschlüsselung benutzten. D.h. dieses SG-LFSR ist ein sehr guter Zufallsgenerator. Eines will ich hier noch loswerden, da ich öfters im Netz auf Aussagen treffe das ein Hardware Zufallsgenerator besser wäre als ein Pseudo-Zufallsgenerator. Diese Aussage ist schlichtweg falsch. Denn man kann bei einem HW-Generator NIEMALS mathematisch exakt beweisen das der HW-Generator auch wirklich Zufall produziert. Ganz im gegensatz dazu stehen Pseudo-Zufalls-Geenratoren. Diese entsprechen ganz exakt der Mathematik, sind also absolut exakt vorhersehbar, und somit kann man über die Wahl der richtigen Paramerter und Verfahren auch ganz exakt ausrechnen wie sicher der produzierte Zufall tatsächlich sein wird. Bei einem Zufallsgenerator ist es primär nur wichtig das die produziereten Zahlenfolgen statistisch gesehen zufällig sind. Durch die korrekte Wahl von Startwerten = Seed's und deren Geheimhaltung, kann nunmehr auch der Zufalls geschützt werden. Wie gesagt, alle diese Eigenschaften können mit Rauschgeneratoren, Radioaktivem Zerfall bisher NICHT mathematisch beweisen werden, man geht bei solchen Generstoren einfach davon aus das sie Zufall produzieren, einfach weil der Mensch bisher kein Muster entdecken konnte. D.h. aber nicht das kein Muster exsitieren kann. Gruß Hagen
Danke, ich schau mir das gleich mal an. Ich habe mal blos ein ganz kleines Programm geschrieben und geht für meine Ansprüche. Bin schon denke ich auf dem richtigen Weg. MacheZufZahl: lds temp,SR_ZufZahl lds temp2,(SR_ZufZahl+1) ;2 Byte im SRAM ror temp ror temp2 mov temp3,temp2 andi temp3,0b00000011 ;Maske cpi temp3,0 ;Exor breq ClrBit7 ;kann man auch ;anders machen cpi temp3,3 breq ClrBit7 SetBit7: sbr temp,1<<7 rjmp EndMacheZuf ClrBit7: cbr temp,1<<7 EndmacheZuf: sts SR_ZufZahl,temp sts (SR_ZufZahl+1),temp2 ret ;temp kann man dann nehmen
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.