Also, in deiner Formel oben haste dich verschrieben, ein LCG hat die Formel:
Quelltext
1:
| x[n] = ( a * x[n-1] + c ) mod m |
Hierbei wird die maximale Periode durch
M beschränkt, weil ja maximal die Zahlen von
0..M-1 vorkommen können! Die anderen Konstanten
A und
C müssen außerdem bestimmte Bedingungen erfüllen, damit eine maximale Periode ereicht wird.
Ich bin mir nicht sicher, aber
A muss relativ Prim zu
M sein und
C ein vielfaches alles Primfaktoren von
M plus 1! Es gibt aber glaube ich noch andere Punkte die berücksichtigt werden müssen! Der Startwert
x[0] ist eig relativ egal, weil er "nur" festlegt, wo in der Periode gestartet wird!
Hier könnte ich mir vorstellen, dass der Zufallsgenerator anders eingesetzt, nähmlich in der Form:
Quelltext
1: 2:
| x[n] = ( a * x[n-1] + c ) mod m; Output = x[n] mod n; |
Hier ist
N die in
Random() angegebene Zahl, zum festlegen der Menge der Zahlen für den
Output! Ist
M hier eine Primzahl, so lassen sich
A und
C leicht finden und bei einem großen
M bekommt man auch eine lange Periode! Der
Output ist dann durch
N nur noch auf eine bestimmte Menge von Zahlen festgelegt.
Damit ist das errechnen von
A und
C nicht sehr viel schwerer wie bei einem üblichen LCG!
MfG Sirke