Zufallsgenerator in Win32 Assembler

Gast #434939
Hey ihr!

Ich hab da nen Problem einen Zufallsgenerator in Win32 Assembler 
umzusetzen. Dabei geht es mir nicht um kryptografisch sichere 
Zufallszahlen, es reicht mir vollkommen wenn die generierten Zahlen sich 
von Programmstart zu Programmstart unterscheiden. Mein bisheriger Ansatz 
war einfach die GetTickCounts API zu benutzen, aber das Problem ist das 
sich diese "Zufallszahl" nur einmal pro ms ändert, ich aber mehrere 
Zufallszahlen pro ms brauche. Danach habe ich versucht einen "lineareren 
Kongruenzgenerator" 
(http://de.wikipedia.org/wiki/Linearer_Kongruenzgenerator) zu 
implementieren, mit der Rückgabe von GetTickCounts als ersten Seed. Aber 
leider wähle ich entweder die ganze Zeit ungünstige Parameter oder mein 
Code weist irgendwo einen fundamentalen Fehler auf (ich fürchte ich 
runde zu großzügig aber wenn ich das nicht mache kann es vorkommen, dass 
bei der Division die Register zu klein sind und mein Programm abstürzt).
Ich muss dazu sagen, dass es mein erstes Projekt in Win32 Assembler ist, 
davor habe ich Assembler nur für AVRs programmiert.

Als erstes würden mich alle Informationen, wenn möglich Sources 
interessieren die sich damit beschäftigen einen einfachen 
(pseudo-)Zufallsgenerator in ASM umzusetzen. Wenn ihr noch andere 
innovative Ideen entwickelt habt wie ich einen einfachen 
Zufallsgenerator umsetzen könnte sind die natürlich auch gerne 
willkommen ;D

Achja, nur für den Fall, dass ihr euch tatsächlich meinen Quälcode antun 
wollt kann ich den natürlich auch noch posten, aber wie gesagt ist es 
mein erstes Win32 Assembler Projekt also erwartet nicht allzu viel von 
meinem Code, vieles ist halt noch sehr unschön gelöst.
Gast #434949
Aus den "Numerical Recipes", 7.1, Quick and Dirty Generators - An Even 
Quicker Generator.
Ist zwar in C, jedoch so einfach, dass eine Umsetzung in ASM trivial 
ist.

--------------------------------------------
unsigned long idum;
...
idum = 1664525L*idum + 1013904223L;
-----------------------------------------------

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 20 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.