.| Autor | Beitrag |
|---|---|
|
000 24.08.2001, 17:42 WareWolf |
Kleines Problem: Dann hab ich auch schon das Register für die Rasterzeile der VGA Karte auf ähnliche Weise benutzt, aber das ist genau so "gleichmässig". Nun meine Frage: Sig as a brick ┴┬┴┬┴┬┴┬┴┬┴┬┴ |
|
Profil || Suche |
|
001 24.08.2001, 18:16 Prefect |
Das hier ist der Diablo2-Zufallsgenerator (nicht (c) darthpaul ;)). 18:34:42 <darthpaul> struct RAND Viel Spaß damit. Das Ganze kann man locker in Assembler übertragen. (shld ist ne nette Anweisung) cu, Widelands - Gemütliche Aufbaustrategie, Free Software |
|
Profil || Suche |
|
002 27.08.2001, 18:58 WareWolf |
Danke jedenfalls für die Antwort, bringt mir aber ehrlich gesagt nichts. Sig as a brick ┴┬┴┬┴┬┴┬┴┬┴┬┴ |
|
Profil || Suche |
|
003 28.08.2001, 00:34 Kriz |
Es gibt eigentlich keine echten Zufallszahlen in Computern, schon aus der Tatsache heraus, daß eine (umgangsprachliche) ZUFALLSZAHL eine beliebige Zahl darstellt und das Zahlenspektrum ist in einem Computer begrenzt. Zwar weniger von der Darstellungsgröße von irgendwelchen Datentypen, sondern durch die Speicherressourcen. Eine Folge von Zufallszahlen zu erschaffen, unterliegt folgenden Algorithmen: a) Die Methode der linearen Kongruenz (Lehmer'sche Restmethode) -------------------------------------------------------------------------- zu a) Der C/C++ Code ist simpel. Erstellt wird ein Array mit N Zufallszahlen nach der Lehmer'schen Restmethode, wobei seed, b und m Konstanten sind, die man vorher festlegen muß. Das Ergebnis ist eine Folge von Zufallszahlen zwischen 0 und m-1:
Das Problem ist nur die geschickte Wahl der Konstanten! Eine Wahl wie seed = 0, b = 19 und m = 381 führt zu der sich schnell wiederholenden Folge: 0, 1, 20, 0, 1, 20, ... Und das in einem Zufallsspektrum zwischen 0 und 380. Nicht sehr erhabend... Dieser Algorithmus erzeugt u.U. einen Überlauf!!!. Es gibt aber eine Methode, den Überlauf zu verhindern. Aber den Code möchte ich jetzt hier nicht reinpacken... Bei Bedarf jo, aber nicht jetzt =) zu b) Die zweite Methode beruht auf den Schieberegistern mit linearer Rückführung und basiert auf Berechnungen in der Bitebene. Der Code basiert u.a. auf dem Überlaufschutz-Code, also daher erst später... Da der Algorithmus b) auf Hardwareebene gut realisiert werden kann, ist er meist derjenige, der für Zufallszahlenerzeugung benutzt wird. Die Konstanten werden als beliebige Zahl gemäß dem Systemtakt vom System zum zeitpunkt des Aufrufs automatisch festgelegt. Cu K:R-I)Z++ Dieser Beitrag wurde am 28.08.2001 um 00:35 von Kriz bearbeitet. |
|
Profil || Suche |
|
004 28.08.2001, 12:29 WareWolf |
ja, gut. Ich hatte eigentlich deshalb den Thread eröffnet, weil ich aus der früheren C64 Zeit noch weiss, daß dort die Zufallszahlen aus dem Soundchip (SID) ausgelesen wurden. Dieser erzeugte auf Hardwarebasis ein weisses Rauschen ähnlich der Chaos-Theorie. Das waren dann wirkliche Zufallszahlen. Na ja, es ist nicht immer alles besser geworden... DANKE --Sig as a brick ┴┬┴┬┴┬┴┬┴┬┴┬┴ |
|
Profil || Suche |
|
005 28.08.2001, 17:32 apfelkorn |
Es ist niemals möglich, einem Computer eine "echte" Zufallszahl abzuverlangen, ausser, sie wird durch äussere Einflüsse beeinflußt. (Also z.B. durch ein angeschlossenes Mikrofon, oder durch eine getragene Kamera, die auch ständig neues sieht, u.ä. -- |
|
Profil || Suche |
|
006 28.08.2001, 20:08 Prefect |
Unter Linux gibt's ja /dev/random, das Gerät liefert die Zufallszahlen, die aus gewissen Hardwareinputs gewonnen werden.. z.B. Netzwerkpakete, Aktivitäten an der Tastatur und am seriellen Port. cu, Widelands - Gemütliche Aufbaustrategie, Free Software |
|
Profil || Suche |
|
007 29.08.2001, 10:59 apfelkorn |
Seht ihr... :) -- |
|
Profil || Suche |

