Java Pseudozufallszahlen (linerarer Kongruenzgenerator)

Cybersider

Cadet 3rd Year
Registriert
Aug. 2011
Beiträge
41
Hallo erstmal ;)

Ich hätte eine Frage zu Pseudozufallszahlen bzw. zu der Methode des linearen Kongruenzgenerators.
Ich habe mich im Internet versucht ein bisschen schlau zu machen, verstehe aber immer nicht, wie das jetzt eigentlich funktioniert.

Ich soll einen Algoritmus entwickeln, der Pseudozufallszahlen ausspuckt und das eben mit Hilfe dieses linearen Konkruenzgenerators.
Ich möchte auch nicht einen Java-Quellcode bekommen oder irgendwelche Lösungsansätze, da ich einen gewissen Ehrgeiz entdeckt habe, dieses selber zu lösen.
Ich wollte nur fragen, ob jemand mir das Prinzip dieses linearen Kongruenzgenerators erklären kann :)

BTW. Wikipedia Artikel hat mich nicht wirklich weitergebracht, obwohl andere Einträge im Internet immer darauf verwiesen haben.

mfg
Cybersider

p.S.: Schon jetzt danke, an jeden der sich die Mühe macht, meine Anliegen durchzulesen :)
 
Wenn ich das richtig verstehe, benötigst du für einen linearen Kongruenzgenerator nur die Formel yi = (yi-1+b) mod m

Für a, b, m nimmst du einen beliebigen ganzzahligen Wert. Das ganze packst du dann in eine Schleife und lässt diese durchlaufen, bis du genügend Zahlen hast.
 
Ich glaube bei dir besteht das Problem beim verstehen der Formel:

yi = (ayi-1+b) mod m

a,b und m sind Konstanten und ändern sich nicht, wobei a < m und b < m sein sollen.
Dann gibt es noch einen Startwert y1, der alles zwischen 0 und m - 1 sein darf.

Hier mal ein einfaches Beispiel mit a=1, b=1, m=10 und y1=0

y1= 0
y2=(y1 + 1) mod 10 = (0+1) mod 10 = 1
y3=(y2 + 1) mod 10 = (1+1) mod 10 = 2
y4=(y3 + 1) mod 10 = (2+1) mod 10 = 3
...
y11=(y10 + 1) mod 10 = (9+1) mod 10 = 0

Du siehst jetzt hoffentlich, warum er linear ist, genau wie die linear Gleichung y=x (für 0 <= x <= 10).
 
Ich habe inzwischen weiter gesucht und folgendes gefunden:

http://www.it.fht-esslingen.de/~sch...ogie/seminar/ws9798/html/pseudo/pseudo-2.html

Da ist die rede von yi = (a*yi-1+b) mod m.
Was heisst beliebig? Für mich oder für den, der das Programm benutzt ? Oder ist das mir überlassen ?
Ich bin jetzt soweit, dass ich weis, dass es eine Anfangswert gibt, der vom Benutzer gegeben wird und dann anhand der oben genannten Formel eine Pseudozufallszahl erstellt wird. Aber wie werden a,b, und m gewählt ?
Ergänzung ()

ahhh :D
Vielen dank Pawel :)
Also sind die Konstanten im Programm von vorneherein angegeben und sollen nicht vom Benutzer eigegeben werden sozusagen?!
 
Du kannst beides machen, sowohl von Anfang an im Code definiert oder dem Benutzer erlauben sich welche auszusuchen. :)

Für den ersten Wurf und imho zum Lösen der Aufgabe reicht es aus, wenn die Konstanten vornherein definiert sind und nur durch Programmänderungen verändert werden können.
 
VIELEN VIELEN DANK :)
Vor allem an dich Pawel, aber auch an alle anderen, die sich die Zeit und Mühe gemacht haben, mir zu helfen. :)

mfg
Cyber :)
 
Turas schrieb:
Er hat einen Fehler in seiner Formel :P

Ja, habe mich vertippt. Jeder der den Wiki Artikel gelesen hat, weiß aber wie die Formel auszusehen hat.

Außerdem würde dann Variable a als Ganzzahl auch wenig Sinn machen, oder?
 
Zurück
Oben