
|
INFO - FAQ - CC2-Forum - CCPro-Forum |
|
||
|
Hallo ihr vier > Also Randomize timer oder auch define x ivar[163] brigt nichts. Du erhĂ€lst immer nach betĂ€tigen des Resetknopfes den gleichen Wert. nach einem Reset lĂ€uft der Timer im Kontroller von Null los. Ein RANDOMIZE TIMER am Programmbeginn ist also nichts anderes als ein RANDOMIZE 0. Deshalb werden nach jedem Reset die gleichen Zufallszahlen generiert. Solange SynchronitĂ€t zwischen Systemzeit und Zufallszahl besteht wird sich daran auch nichts Ă€ndern. Davon abgesehen ist der Algorithmus zur Generierung der Zufallszahlen ("Methode der linearen Kongruenz") auf der Open-Micro zwar besser als auf der C-Control, aber systembedingt wird immer wieder die gleiche aus 256 Elementen bestehende Folge von Pseudo-Zufallszahlen generiert. RANDOMIZE verschiebt nur den Beginn der Folge. Durch eine eigene Erweiterung auf 16 Bit könnte man das Problem etwas entschĂ€rfen, aber echte Zufallszahlen zu generieren ist gar nicht so einfach. Man könnte zum Beispiel eine Variable schnell hochzĂ€hlen, bis der Anwender eine Taste loslĂ€Ăt. Welche Eigenschaften die durch "Methode der linearen Kongruenz" erzeugten Pseudo-Zufallzahlen genau besitzen kann ich nicht sagen, aber "RAND MOD 4" ist offensichtlich nicht geeignet, Zufallzahlen zwischen 0 und 3 zu generieren. Gute Ergebnisse werden aber offensichtlich mit "RAND/64" erzeugt. (Ansonsten mal in Fachliteratur wie beispielsweise Donald Knuth, The Art of Computer Programming, Vol. 2, USA 1981 (Addison-Wesley) nachsehen. Es gibt ganze Abhandlungen zu Zufallszahlen.) Ich dachte eigentlich, schon etwas zu dieser Problematik in die Anleitung zur OM geschrieben zu haben, aber das ist offensichtlich nicht der Fall. Werde ich also in der nĂ€chsten 1.3er Version der Doku nachholen. GruĂ Dietmar Meine Homepage: http://ccintern.dharlos.de |
| Antwort schreiben |