Ich habe hier vor Jahren mal einen Zufallsgenerator programmiert, und
finde leider nichts mehr dazu, was das für ein Typ ist.
Er hat Ähnlichkeit mit einem Linearen Kongruenzgenerator.
1 | function random() : uint16;
|
2 | const
|
3 | rndmul = 80;
|
4 | rndseed = 7954;
|
5 | rndval : uint16 = rndseed;
|
6 | begin
|
7 | rndval := rndmul * (rndval and $00FF) + (rndval shr 8);
|
8 | random := rndval mod 256;
|
9 | end;
|
Der entscheidende Unterschied zu den üblichen LGK ist, dass hier ein
Teil des Wertes am Ende nochmal dazuaddiert wird, womit offenbar das
Problem der Hyperebenenbildung erheblich gemindert wird.
Zumindest schneidet dieser Generator im Spektraltest erstaunlich gut ab,
wenn man seine Einfachheit berücksichtigt.