Quadratmittengenerator, Quelltext, direkte Formel

Hallo zusammen.
Zur Berechnung für Pseudozufallszahlen bin ich auf den (simplen, veralteten,…) Quadratmittengenerator gestossen. [Im PDF http://www.mttcs.org/Skripte/Pra/Material/zz.pdf auf Seite 2 findet man dazu folgenden Quellcode)

function f\_quadratmittengenerator( start:integer):integer;
 { Quadratmittengenerator }
 var zz : integer;
 begin
 zz := start \* start;
 zz := zz mod 1000000;
 zz := zz div 100;
 f\_quadratmittengenerator := zz;
 end; { of function f\_quadratmittengenerator }

Warum benutzt man hier denn MOD 1.000.000 und teilt durch 100?
Eigentlich bin ich nämlich auf der Suche einer konkreten Formel der Rekursion, kann man xn+1 nicht in der Form xn+1=…xn darstellen?

Mit einem Stift und Papier bekomme ich das Verfahren ganz gut hin, aber eine direkte Formel anzugeben oder zu verstehen, warum MOD 1Mio, Div 100 verstehe ich leider nicht.

Kann jemand meine Fragen teilweise (oder vielleicht ganz) beantworten?

MfG
Disap

Hallo,

Warum benutzt man hier denn MOD 1.000.000 und teilt durch 100?

MOD 1.000.000 nimmt einfach die letzten 6 Ziffern der Zahl, und mit der Division durch 100 schmeisst man die letzten beiden Ziffern weg.

Grüße,
Moritz

Hi

Hallo,

Warum benutzt man hier denn MOD 1.000.000 und teilt durch 100?

MOD 1.000.000 nimmt einfach die letzten 6 Ziffern der Zahl,
und mit der Division durch 100 schmeisst man die letzten
beiden Ziffern weg.

Wenn xn 8 Stellen hat, kann ich xn+1 dann immer so berechnen:

xn+1 = ( (xnMOD 1.000.000)DIV 100 )2?

Bei der Programmierung fällt das, was nach dem DIV hinter dem Komma stesht, doch immer weg, könnte ich nun wie folgt modifizieren:

xn+1 = |_(xnMOD 1.000.000)/ 100 _|2?

Wobei |_ _| die untere Gaußklammer (mit viel Phantasie kann man es erkennen) darstellen soll?

beste Grüße
Disap

Hallo,

Warum benutzt man hier denn MOD 1.000.000 und teilt durch 100?

MOD 1.000.000 nimmt einfach die letzten 6 Ziffern der Zahl,
und mit der Division durch 100 schmeisst man die letzten
beiden Ziffern weg.

Wenn xn 8 Stellen hat, kann ich
xn+1 dann immer so berechnen:

xn+1 = ( (xnMOD
1.000.000)DIV 100 )2?

Nein. Der original-Algorithmus nimmt erst das Quadrat, dann kommt der Rest der Operationen. Bei dir ist es anders herum.

Grüße,
Moritz

1 Like