RND-Zahlen von 0-10 in ASM


  • mactron
  • 4490 Aufrufe 102 Antworten

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Schnelligkeit ist ja nicht der einzige Leistungsanspruch an einen Zufallsgenerator. Es gibt noch mehr. Da der Generator vom SID jedoch auf eigener Hardware läuft und nicht auf der CPU ist er schon mal wahnsinnig schnell. Pluspunkt. Ob er wirklich gleichverteilt ist, weiss ich nicht, denke aber, das kann man annehmen. Ebenfalls was Unabhängigkeit angeht sollte das Ding für die meisten Ansprüche genügen, aber das muss man prüfen und kann es nicht einfach hinnehmen.

    Was schlecht an der Methode ist, das ist, dass er nicht nachprüfbar ist. Sprich du hast keine fest laufende Zufallsfolge, mit der du bestimmte Sachen garantieren kannst. Du kannst also nicht garantieren, dass mindestens einmal die Zahl 0 vorkommt bei Periode Aufrufen. Und das kann schlecht sein und unzureichend.

    Da es sich bei dem Register weiterhin um einen Shifter handelt, kannst du bei schnellen Zugriffen von einem Bit aufs andere schließen. Sprich wir haben eine Folge von 10001010, die wir auslesen, jede weitere Sequenz muss also 0001010X, 001010XX, 01010XXX sein. Das kann durchaus unerwünscht sein.

    Das Preis/Leistungsverhältnis des Rauschgenerators ist schon mal sehr gut, verglichen mit den bisher vorgeschlagenen Softwarelösungen. Aber genügt er auch den Ansprüchen einer Kartenmischroutine? Genau hier kommt ja der große Nachteil ins Spiel, dass die Werte zumindest 7 Zyklen lang direkt voneinander abhängen.

    Wir haben etwa 3800 Hz bei unserer Einstellung, das heißt alle 263 Zyklen dürfen wir einen neuen Wert abgreifen, ansonsten ist mit Verdoppelungen zu rechnen.

    Was wir ebenfalls niemals haben werden, ist zweimal hintereinander die selbe Zahl (es sei denn wir haben einen Doppelzugriff). Ausnahme ist die $ff und die $00. Wenn wir die Zufallszahlen nur ab und zu abgreifen, haben wir kein Problem mit dem Generator, die voneinander unabhängigen Werte sind recht nett. Doch je schneller wir ihn bedienen, desto kritischer wird es. Bei rund 2000 Zyklen zwischen den einzelnen Zugriffen haben wir eine Entspannung der Abhängigkeiten. Das bedeutet, wir dürfen eigentlich nur alle 2 ms zugreifen. Und 2 ms ist jetzt gar nicht mehr so schnell, oder? In 2 ms, bin ich mir fast sicher, schaffe ich einen Durchlauf von Fortuna. Das ist ja nichts weiter als ein Durchlauf von AES, na und?

    Der einzige Vorteil, den der SID-Random dann noch hat, ist, dass er von der CPU unabhängig arbeitet und daher kein Zyklen verbrät.

    Also: Geschichte noch nicht erledigt.
  • mactron schrieb:

    Auf jeden Fall freue ich mich sehr über die vielen Lösungsvorschläge der Forums-Mitglieder :thumbup:
    Danke für Eure Mitarbeit !

    Kein Ding! Ich hoffe bloß, dass du mit dem Zeug auch was anfangen kannst. Die auf der ersten Seite von dir vorgeschlagene Lösung werde ich nochmal mit meinem Statistik-Prüfer testen, wenn ich etwas Zeit habe. Aber ich denke, die ist nicht besonders gut. Die beste/schnellste Lösung scheint mir immer noch der Generator von Voice3 zu sein. Und du findest auch schnelle Lösungen in ASM, um diese auf 1-10 zu projizieren.

    Dass du mit der Frage in ein Wespennest stichst, hätte dir fast klar sein müssen. :D Immerhin zerbrechen sich die Programmierer, Mathematiker und Informatiker seit den Zeiten der ersten Rechner (von Neumann!) über das Problem die Köpfe.
  • Benutzer online 1

    1 Besucher

  • Tags