Hallo zusammen,
ich verwende in den Spielen der TMF schon seit Jahren eine speziell entwickelte Zufallszahlentechnik, die von der Hauptschleife ausgeführt wird, während der Raster-/Timer-IRQ mit anderen Dingen beschäftigt ist - also im Grunde eine Art "Multi-Tasking". Der eigene Maschinesprachekode verwendet dafür also auch die erforderlichen BASIC ROM Routinen - funktioniert alles harmonisch, sofern man nicht die Zeropage missbraucht!
Nun habe mittels eines kleinen Programms mal erforscht, wie "neutral" denn der RND(x) Befehl unseres BASIC V2 ist. Auf der eine Seite wünscht man sich ja wirklich zufällige Werte, deren Grenzen man vorgibt. Also am liebsten ein chaotisches und unberechenbares Durcheinander. Gleichzeitig möchte man aber auch, dass die Werte auf einen längeren Zeitraum dann doch irgendwie gleichmäßig verteilt sind, damit kein Ungleichgewicht entsteht.
Bevor ich gleich ein paar Ergebnisse nenne, kann ich jetzt schon sagen - der RND-Befehl des oft so abwertend betrachteten BASIC V2, tut nicht nur das, was man von ihm erwartet - nein, er tut es mit Perfektion!!!
Ich chabe euch ein Progrämmchen zum Runterladen angehängt, mit denen ihr selber die Ergebnisse analysieren könnt. Hier schon mal ein paar Auszüge:
Es besteht damit die Möglichkeit einen virtuellen Würfel 6 x, 60 x, 100 x oder 60.000 x würfeln zu lassen. Am Ende kann man vergleichen, wieviel mal die [1], die [2], ... die [6] vorgekommen ist.
Den Langzeittest mit 60.000 Würfen habe ich 4 mal wiederholt (CeVi brauchte dafür jeweils nicht mal 6 Minuten!) - hier die Ergebnisse:
[1]: 9889
[2]: 10065
[3]: 9807
[4]: 10092
[5]: 10007
[6]: 10140
Abweichung/Gleichmäßigkeit -1,9% / + 1,4%
[1]: 9899
[2]: 10055
[3]: 9861
[4]: 10100
[5]: 10001
[6]: 10084
Abweichung/Gleichmäßigkeit -1,4% / + 1,0%
[1]: 9797
[2]: 10010
[3]: 10235
[4]: 9831
[5]: 10031
[6]: 10096
Abweichung/Gleichmäßigkeit -2,0% / + 2,4%
[1]: 9937
[2]: 10056
[3]: 9901
[4]: 9947
[5]: 10103
[6]: 10056
Abweichung/Gleichmäßigkeit -1,0% / + 1,0%
Das bedeutet also, dass auf lange Sicht hier im Bsp. alle 6 Würfelaugen gleichmäßig vorkommen (Abweichung +/-3 %) und es somit kein Ungleichgewicht gibt.
Im Kurzzeittest mit nur 6 Würfen, dauert es sehr lange, bis jedes Würfelauge nur 1 x vorkommt - also alle gleich verteilt sind.
Eine bessere Grundlage für Zufallszahlen/-werte in Spielen bspw. gibt es doch gar nicht!
Wer sich's mal anschauen und selber ausprobieren möchte, kann sich hier das D64 Image runterladen. Ist alles selbsterklärend! Natürlich wird gemäß Handbuch mit einer negativen Zufallszahl gestartet, damit nach einem Reset odr Einschalten nicht immer die gleiche Reihenfolge kommt. Solange das Programm nach einem Reset noch im Speicher steht, lässt es sich mit SYS 2100 wieder starten.
Es wird dabei immer die aktuelle Startfolge angezeigt (eine von 65536 Möglichkeiten). Somit ist die Wahrscheinlichkeit, dass ihr 2 x hintereinander die gleichen Zahlenfolge bekommt praktisch null!
Viel Spaß!