Hallo Besucher, der Thread wurde 3,8k mal aufgerufen und enthält 9 Antworten

letzter Beitrag von DATA-LAND am

Zufalls Chart

  • Thread "Zufalls Chart" mit 2 Fotos und D64 Anhang.


    In dem Thread "Würfel Analyse" Würfel Analyse hatte ich beschrieben, dass ich via Langzeittest analysiert habe, ob der BASIC Befehl RND eine gewisse Neutralität hat. Vor vielen Jahren habe ich mal in einem Sachbuch gelesen, dass der Autor sinngemäß sagte, dass sich die Zufallszahlen auf lange Sicht ausgleichen. Er gab auch noch an, dass das ja bspw. für Würfelspiele wichtig ist!


    "1ST1" inspirierte mich zu diesem "Zufalls Chart", da er davon sprach auch die Reihenfolge der Zahlen zu untersuchen. So habe ich kurzerhand das Würfelprogramm umgebaut, womit nun eine "Kurzeitchronik" versanschaulicht wird. Ich chabe dazu wieder ein Download zur Verfügung gestellt und 2 Fotos angehängt.


    Auf dem ersten sieht man links die 1. Zufallszahl (Werte 0...199), ganz rechts die 320. Zufallszahl (Wert 0...199). Eine "0" ist quasi ein schwarzer Strich, der den Chart teilt, "199" ist ein kpl. senkrechter Balken in Chartfarbe.
    Auf dem zweiten sieht man prinzipiell das gleiche, allerdings kommen hier nur Werte von 1...6 vor (Pixelhöhe ein Vielfaches von 32) um eine "Würfelchronik" aufzuzeigen. Die "6" sind sozusagen die oberen "Fransen". Achtet mal nur auf die 6'er, auf deren Lücken oder Wiederholungen - perfekt - wie ein echter Würfel, oder?


    Bei erneutem Tastendruck baut sich ein neuer Chart auf der, der dann mit der 321., bzw. der 7. Zahl beginnt.


    Ich kann in keinem der Fotos und auch in allen Charts, die das Programm liefert weder eine bestimmte Reihenfolge, noch ein Muster, noch eine Wiederholung feststellen. Es ist einfach nur ein chaotisches Durcheinander von Werten in bestimmten Grenzen. Somit erfüllt das Kernstück - der BASIC RND Befehl - alle 4 Voraussetzungen für einen "perfekten" Zufallsgenerator!
    - Bei jedem Neustart eine neue Startfolge (eine von 65536). Damit ist praktisch ausgeschlossen, dass man am nächsten Tag zu Beginn die gleiche Spielsituation vorfindet, wie am Vortag.
    - Kurzzeitig betrachtet bilden die Zufallszahlen ein unberechenbares Chaos aber mit den Besonderheiten, dass manchmal eine Zahl sehr lange nicht kommt, manchmal aber auch direkt hintereinander die gleiche nocheinmal (wie bspw. beim echten Würfeln ja auch).
    - Langzeitig betrachtet gibt es aber einen Ausgleich, bzw. eine Gleichmäßigkeit, sodass keine Gewichtung vorliegt (also kein gezinkter Würfel).
    - Der angeforderte Wertebereich lässt sich definieren.


    Es ist okay, wenn ihr eine eigene Meinung habt, aber bitte nicht "über das Essen nörgeln, bevor ihr es probiert habt"! ;)


    In meinen Augen verhält sich diese Zufallszahlentechnologie so wie man sich es wünscht. Ich lese nicht Berichte auf irgendwelchen Seiten, die man dann versucht auf den BASIC V2 Befehl RND zu übertragen. Mich interessieren auch keine Algorithmen anderer Systeme. Meine Welt hat 64 KB RAM, 1 MHz, 16 Farben und 16 KB ROM. Soll heißen, ich arrangiere mich mit dem was ich vorfinde und mache das Beste daraus.


    Aber bitte berücksichtigen:


    - Dieses Progamm ist in Maschinesprache, basiert auf eigens entwickelten Kode, der als Kernstück aber eben den besagten BASIC Befehl RND benutzt.
    - Ich habe es bisher nur auf realer Hardware probiert. Evtl. kann es jemand auf einem EMU testen? Sehen die Charts dann ähnlich aus oder ist eine Regelmäßigkeit zu beobachten?


    Auf dem D64 Image ist auch eine überarbeitete Version der Würfel Analyse dabei, die auf Wunsch mit einem gezinkten Würfel arbeitet! :)


    Viel Spaß beim Auswerten! ;)

  • Hat jemand die Muße und Möglichkeit das angehängte Programm mal auf einem EMU zu testen (CCS64, VICE...)?


    Es geht mir nur darum, ob die EMUs eine ähnliche Chartcharakteristik wie auf den obigen Fotos erzeugen. Oder sieht man evtl. waagerechte, sägezahnförmige oder irgendwie regelmäßige Verläufe? Es gibt zwei Modi - für 200 oder für nur 6 Werte (Würfelaugen).


    Vielen Dank! :)

  • Er zeigt in VICE etwa das gleiche an wie in den Screenshots oben.

    Ach das ist schön - dann hab ich sowas wie 'ne Basis! :)


    Man kommt nur nicht mehr raus ins Hauptmenü.

    Ist ein "Einweg-Programm" - wenn man sich ein paar Charts hintereinander angeguckt hat, hat es seine Schuldigkeit getan! Hahahaha...


    Aber es veranschaulicht gut die unberechenbare Reihenfolge der Werte 0...199, bzw. 1...6. Darum ging's ja nur! ;)

  • Hat jemand die Muße und Möglichkeit das angehängte Programm mal auf einem EMU zu testen (CCS64, VICE...)?


    Es geht mir nur darum, ob die EMUs eine ähnliche Chartcharakteristik wie auf den obigen Fotos erzeugen. Oder sieht man evtl. waagerechte, sägezahnförmige oder irgendwie regelmäßige Verläufe? Es gibt zwei Modi - für 200 oder für nur 6 Werte (Würfelaugen).


    Vielen Dank! :)

    Es wäre schön, wenn du den Quelltext zur Verfügung stellen würdest, dann könnte man besser sehen und bewerten, was du da eigentlich gemacht hast. Ich habe spontan keine große Lust, mit dem Disassembler dranzugehen: Als ich den SYS 2100 anschaute und dann als erstes fand

    Code
    1. .C:0834 4C 37 08 JMP $0837
    2. .C:0837 78 SEI

    hatte ich schon keine Lust, mit das weiter anzuschauen.


    Wieso erwartest du im Emulator eigentlich andere Charakteristiken? Diese Frage macht mich sehr stutzig: Wenn man weiß, wie der PRNG funktioniert, sollte man da eigentlich keine grundsätzlich anderen Verläufe erwarten. Bloß der Seed könnte unter Umständen etwas anders sein, aber das wird ja von dir gar nicht gezielt untersucht, soweit ich das sehe.

  • hatte ich schon keine Lust, mit das weiter anzuschauen

    Zwischen dem JMP und dem SEI Befehl war ursprünglich eine längere Sprungtabelle, die ich herausgelöscht habe. Da es ein Einweg Programm ist, hatte ich keine Lust viel Zeit in eine kpl. Neuentwicklung zu investieren. Vielmehr ist es eine Zusammenstellung aus vielen Kodes älterer Projekte - Dauer ca. 1...2 Std., da kann sowas passieren. Im Übrigen solltest du ja nicht in den Kode, sondern auf den Chart gucken. :) Das, was du für den Thread "Würfel Analyse" auf den Bildschirm gezaubert hast, sah viel zu regelmäßig aus. 1ST1 hat mich dazu inspiriert die Sache zu untersuchen.


    Was das Testprogramm macht, hatte ich ja anfangs erwähnt: Es zeigt in Form eines Charts die Reihenfolge und Werte (0...199) von 320 aufeinanderfolgenden Zufallszahlen an.


    Wieso erwartest du im Emulator eigentlich andere Charakteristiken? Diese Frage macht mich sehr stutzig:

    Diese Frage macht DICH stutzig? Dann siehe Post #2 & #4 ebenfalls in "Würfel Analyse". Es ging um TheRyks Äußerung zu alten Emulatoren, auf die du geantwortet hast!


    Aber mal ganz davon abgesehen - wir sind alle gut beraten, wenn wir nicht blind auf Emulatoren vertrauen. Ich habe schon einiges gesehen, was auf echten Maschinen nicht passiert und meiner Meinung nach ist der CCS64 der Kompatiblere. Es gibt mir ein sicheres Gefühl, wenn ich weiß, das eine Software überall zufriedenstellend läuft - egal ob Original oder EMU. Aber ich will es halt wissen und nicht vermuten.

  • Was das Testprogramm macht, hatte ich ja anfangs erwähnt: Es zeigt in Form eines Charts die Reihenfolge und Werte (0...199) von 320 aufeinanderfolgenden Zufallszahlen an

    Ok, seedest du den PRNG? Wenn ja, wie? Das hätte ich mir gerne angeschaut.

    Diese Frage macht DICH stutzig? Dann siehe Post #2 & #4 ebenfalls in "Würfel Analyse". Es ging um TheRyks Äußerung zu alten Emulatoren, auf die du geantwortet hast!

    Der PRNG benutzt einen deterministischen Algorithmus. Das einzige, was im Emulator falsch laufen kann (wenn der Emulator nicht Probleme mit den Opcodes hat, das sollte sich dann allerdings auch anders zeigen als gerade beim PRNG) ist, dass der Seed bei RND(0) und/oder RND(-TI) oder ähnlich "falsch" gegenüber einem richtigen Rechner sein könnte.


    Den PRNG aus dem Commodore-BASIC könnte man auch perfekt auf einem modernen PC nachprogrammieren, so dass ich exakt die gleichen Ergebnisse erwarten würde. Von daher erwarte ich bei einem Emulator keine Überraschungen.

  • Ich bin zwar schon lange aus der Materie raus, aber solche Zufallszahlenfolgen lassen sich doch auch sehr gut statistisch analysieren. Wie sieht es denn da aus?

  • solche Zufallszahlenfolgen lassen sich doch auch sehr gut statistisch analysieren


    Hi! :)


    Ich hatte vor ein paar Tagen einen Langzeittest, bezgl. Gleichverteilung gemacht - siehe Thread: Würfel Analyse


    Es ging darum, ob sich - wie seinerzeit ein Buchautor behauptet hatte - die Werte irgendwann ausgleichen. Bsp. Würfel - ist er langfristig neutral oder "gezinkt". Erstaunlicherweise waren die Abweichungen äußerst gering (bei 60.000 Aufrufen max. +/- 3%).


    Dieser Zufalls Chart ist das Gegenstück - hier siehst du auf einem Chart immer nur 320 Werte von 0...199, nach einem Tastendruck dann die nächsten 320 usw. Du könntest aber genauso gut via BASIC einfach 320 Werte anfordern und auflisten lassen, aber ein Chart zeigt mit nur einem Augenblick sofort die Charakteristik - das ist natürlich ein großer Vorteil. Soll heißen lt. Chart macht auch hier CeVis RND Befehl eine gute Figur. Die Frage war nur anfangs, tut er dies auch auf EMUs. Wurde inzwischen aber bestätigt.


    Zu diesen 2 genannten Kriterien kommt noch die allgemeine Beeinflussbarkeit (ich nutze allerdings immer nur 8-Bit Werte) und die Möglichkeit eine von 65536 möglichen Startfolgen zu erzeugen, was bspw. die Wiederholung einer Spielsituation nach einem Neustart praktisch unmöglich macht. Ich persönlich erzeuge die Startfolge durch die Multiplikation von aktueller Rasterzeile x CIA Timer.


    Letztendlich hat mich Mike noch inspiriert mit einem "Käseknabberprogramm" die Versuche zu zählen, die benötigt werden um bspw. mit zufällig gewählten Positionen einen Bildschirm restlos zu füllen - also 1.000 Werte. Meine Ergebnisse schwankten hier zwischen dem Faktor 7...10. Gott sei dank wiederholten sich viele Werte öfters! Hätte es nur 1.000 Versuche für 1.000 Möglichkeiten gegeben, wäre er für meine Zwecke völlig ungeeignet!


    Also alles in allem habe ich mit den ganzen Tests nur positive Erfahrungen gemacht und bisher hat sich der Bug noch nicht gezeigt, der den Generator in einem Minizyklus enden lässt, in dem er nur rund 750 verschiedene Zahlenfolgen produziert. Lt. Mike kann man ihn aber nicht verhindern. :(


    Das ist so ein mieses Gefühl, als wenn sich herausstellt, dass der Motor deines Autos aufgrund eines Konstruktionsfehlers nur 10.000 km schafft und du selber fährst mit dem Auto aber schon jahrelang... ^^