Hallo Besucher, der Thread wurde 25k mal aufgerufen und enthält 85 Antworten

letzter Beitrag von Mike am

Würfel Analyse

  • Folgendes Problem gibt es auch noch:


    Innerhalb des SID gibt es ja - wie erwähnt - eine Abbildungsvorschrift*, die aus den 12-Bit (2^12 == 4096) Werten
    des LFSR die 8-Bit (2^8 == 256) Werte des Registers zum auslesen macht.


    Käme in einer Stichprobe aus dem gesamten 12-Bit Eingangswertebereich jede Zahl nur 1x vor (also von 0-4095
    gezählt), würde jeder Ausgangwert 2^4 (=16) mal am Ausgang erscheinen.


    Leider erzeugt das LFSR prinzipbedingt aber keine 0x000 als Eingangszahl. D.h. die Zahl 0x00 wird am Ausgang
    daher mit einer etwas geringeren Wahrscheinlichkeit (15/16 = 0.9375) erzeugt, als die restlichen 255 (16/16 = 1.0) Zahlen!



    *ps: Das klingt spannender als es ist: Es werden lediglich 8 bestimmte Bits des 12Bit Werts ausgelesen; die restlichen Bits
    spielen keine Rolle für den Ausgangswert.

  • Hmmm. da kommen dann aber z.T. diese 0...1 Werte heraus, bei denen man dann die zeitintensive Fließkommaarithmetik braucht.

    Nö, es reicht Festkommaarithmetik. Wir wissen ja, wo der "Dezimalpunkt" ist.


    Wenn wir zum Beispiel mit der 6 multiplizieren, wie du es in deinen Beispielen zumeist getan hast, dann ergibt sich folgendes:

    Code
    1. 0.abcdefgh * 110
    2. ================
    3. abcdefgh
    4. abcdefgh
    5. ================
    6. yyyxxxxxxxx

    Wobei "abcdefgh" die 8 Bit Zufallszahl sind, yyy.xxxxxxxx das Produkt. Die "xxxx" interessieren nicht.
    Wir kommen also ohne großen Rechenaufwand und ohne große weitere Optimierungen mit 2 Shift und einer 16-Bit-Addition aus.


    Ich bin gerade am Überlegen, ob man es nicht noch weiter vereinfachen kann, weil die "xxx" uns gar nicht interessieren und wir nur wissen müssen, ob es einen Übertrag in die "yyy" gibt oder nicht. Da könnte man noch einmal daran feilen.

  • Ich bin gerade am Überlegen, ob man es nicht noch weiter vereinfachen kann, weil die "xxx" uns gar nicht interessieren und wir nur wissen müssen, ob es einen Übertrag in die "yyy" gibt oder nicht. Da könnte man noch einmal daran feilen.

    Danke - das wär natürlich super! :) Bin gespannt...


    Durch die vielen Beiträge mit div. Erkenntnissen, Informationen, Tipps und Tricks, wird dieser Thread allmählich zum Forschungslabor! ^^


    Auf jeden Fall bleibt's spannend! Ich werde nun kurzerhand das "Zufalls Chart" Programm so umbauen, dass wahlweise ein Chart dargestellt wird, der auf Zufallszahlen des RND Befehls basiert oder aber auf denen des SID. Mal schauen, wer die bessere Charakteristik aufzeigt...


    Denke mal in 'ner Stunde müsste das erledigt sein. Wen's interessiert, kann ja später nochmal reinschauen.

  • So, hier habe ich die angekündigte Überarbeitung des Programms "Zufalls Chart"! :)


    Im Menü kann man die Quelle des "Übels" wählen - also RND oder SID. Natürlich ist der Chart mit den Zufallszahlen vom SID etwas schneller aufgebaut, was zu einer angenehmen Verkürzung des Bildschirmaufbaus führt. Um den Wertebereich des SID einzuschränken, damit die max. Ausschläge auch auf den Bildschirm passen, wurden seine Zufallszahlen halbiert. Die Gewichtung wird hierbei aber nicht beeinflusst! Die max. Werte des RND werden von vornherein auf 127 berenzt.


    Der Cahrt ist wie folgt zu deuten:
    Die 1. Zahl wird links dargestellt, die 320. ganz rechts, so hat man also eine Kurzzeitchronik, bzw. Charakteristik. Der niedrigste Wert "0" durchtrennt den Chart wie ein Skalpell, der höchste Wert "127" bildet einen hohen senkrechten Balken.


    Bei Tastendruck "<-" kehrt man ins Menü zurück, um etwaige Änderungen vorzunehmen.
    Bei jeder anderen Taste baut sich ein neuer Chart auf, mit der 321. Zufallszahl usw.


    Nun, seid ihr dran!
    Wer hat die schönere Charakteristik?
    Wo seht ihr Muster, Regelmaßigkeiten oder Wiederholungen?
    Gibt es überhaupt Unterschiede in der chaotischen Zufallsfolge???


    Viel Spaß! ;)

  • Aufgrund einer thematisch ähnlichen Diskussion im Denial-Forum habe ich einen linearen Kongruenz-Generator nachgebaut, der Pseudo-Zufallszahlen basierend auf folgender Sequenz:

    Code
    1. X := (1664525 * X + 1013904223) MOD 2^32
    2. n+1 n

    erzeugt. Der Seed/das Resultat ist eine 32-Bit-Zahl und wird innerhalb der USR()-Funktion in den Bereich von 0 (einschließlich) bis 1 (ausschließlich) gebracht, also genau wie RND() es auch tut.


    Als Test hält wieder die Käseknabber-Funktion (Zeilen 29 und 30) her:

    Gruß,


    Michael


    Edit: "GOTO28" in Zeile 30 in "GOTO30" korrigiert.