Wie funktioniert ein einfacher Pseudo-Zufallszahlengenerator?

Post Reply
Message
Author
fk

Wie funktioniert ein einfacher Pseudo-Zufallszahlengenerator?

#1 Post by fk »

Wie funktioniert ein einfacher Pseudo-Zufallszahlengenerator (z.B. in Pascal)? Ich hätte das gerne an einem möglichst einfachen Beispiel erklärt gehabt, sodass ich es mit meinen bescheidenen Mathematik-Kenntnissen nachvollziehen kann. So viel ich weiß, wird der seed-Wert mit der Systemzeit initialisiert. Danke für jegliche Hilfe.

Räuber Hotzenplotz

Re: Wie funktioniert ein einfacher Pseudo-Zufallszahlengenerator?

#2 Post by Räuber Hotzenplotz »

Hallo,

wie einfach darf er denn sein?

Ich hatte schon Anwendungsfälle wo
<blockquote><pre><font size="1" face="">code:</font><hr><font face="Courier New" size="2">
(* Platte "C nach Pascal"-Portierung *)
VAR zz : INTEGER; (* Der "Zufallswert" - in Pascal gibts nicht sowas wie "static"? *)
FUNCTION rnd(): INTEGER;
BEGIN zz:=zz+1;IF zz>9 THEN zz:=0;
rnd:=zz END;
</font><hr></pre></blockquote>
gereicht hat.(Sprich 0123456789012345678901234567...)

Das ISO-C rand() (wohl der billigste Zufallsgenerator den es gibt <img src="http://www.pl-forum.de/UltraBoard/Images/Happy.gif" border="0" align="middle"> )funktioniert afaik nach

r:=(a*r + c)%m

Auf meinem System sind die Werte für a:=1103515245, für c:=12345 und für m:=(2^31).

Das erste r wird dabei von srand gesetzt. Alle anderen Werte sind also davon Abhängig.

Gruss

vyper
Posts: 19
Joined: 27. Feb 2002 23:12

Re: Wie funktioniert ein einfacher Pseudo-Zufallszahlengenerator?

#3 Post by vyper »

<Fachsimpelei>Computer können keine Zufallszahlen erzeugen, da sie deterministische Geräte sind.</Fachsimpelei>

Die genannte Formel

r<sub>n</sub> = ( r<sub>n-1</sub> * a + c ) % m

ist - obwohl sehr einfach - für fast alle Anwendungen ausreichend, allerdings nur, wenn die multiplikative Konstante a gut gewählt wird. Es gibt da recht komplizierte mathematische Untersuchungen, wie a aufgebaut sein muss, damit die folgenden Werte möglichst "zufällig" (richtiger wäre "beliebig") sind. Da müsste man mal im Netz recherchieren, im Kopf habe ich das leider nicht mehr. (Ich glaube mich zu erinnern, dass man gute Werte bekommt, wenn man Zahlen wählt, die auf "421" enden.)

Man muss natürlich mit einem möglichst zufälligen Startwert (r<sub>0</sub>) beginnen, wie schon erwähnt kann das bspw. die Systemzeit sein.

Räuber Hotzenplotz

Re: Wie funktioniert ein einfacher Pseudo-Zufallszahlengenerator?

#4 Post by Räuber Hotzenplotz »

> <Fachsimpelei>Computer können keine Zufallszahlen erzeugen, da sie deterministische Geräte sind.</Fachsimpelei>

Ich denke, dass es sinnvoll ist, Zufälligkeit als die Grösse der kleinsten Turingmaschine die diese Folge erzeugen kann, zu definieren.

Das musste mal gesagt werden... <img src="http://www.pl-forum.de/UltraBoard/Images/Happy.gif" border="0" align="middle">

marc
Posts: 444
Joined: 20. Apr 2001 23:31
Location: Arnsberg

Re: Wie funktioniert ein einfacher Pseudo-Zufallszahlengenerator?

#5 Post by marc »

Moin
Wer googlet, der findet <img src="http://www.pl-forum.de/UltraBoard/Images/Wilk.gif" border="0" align="middle">:
http://home.t-online.de/home/poisoner/krypto/prngs.htm

Gruß
Marc

Post Reply