[Java] Lineare Kongruenz - Zufallszahl

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von phraser, 11. Mai 2011 .

  1. 11. Mai 2011
    Lineare Kongruenz - Zufallszahl

    Servus,
    habe die Aufgabe bekommen, bis nächste Woche ein Programm in Java zu schreiben, das mit Hilfe der linearen Kongruenz eine echte und keine Pseudo-Zufallszahl ausgibt.
    Da ich in Mathe leider nicht soo stark bin, habe ich das Verfahren der linearen Kongruenz nicht verstanden, bzw. kann es mir nicht selbst aneignen. Deshalb suche ich hiermit jemanden, der sich mal mit mir in ICQ oder Jabber zusammensetzen würde und mir das erklären könnte, ggf. dann auch beim Coden helfen würde?
    Wäre super nett

    Gruß
     
  2. 11. Mai 2011
    AW: Lineare Kongruenz - Zufallszahl

    Bei den mathematischen Hintergründen kann ich dir nicht helfen, aber das Programm an sich zu schreiben ist doch ganz simpel, wenn man sich den Wikipediaartikel mal anschaut. Du musst lediglich die Formel nutzen.

    Kongruenzgenerator – Wikipedia


    Übrigens sind die erzeugten Zahlen ebenfalls Pseudo-Zufallszahlen.
     
  3. 13. Mai 2011
    AW: Lineare Kongruenz - Zufallszahl

    Chillikid hat ja schon das wichtigste geschrieben. Das Prinzip ist ja relativ einfach. Du hast eine rekursive Funktion. Nehmen wir der Anschaulichkeit halber mal die Fibonacci Folge, die Dir hoffentlich bekannt ist und auch im Wikipedia Artikel erwähnt wird. Würdest Du einfach nur die Fibonacci-Folge nehmen, bekommst Du natürlich mit jedem Aufruf eine immer größere Zahl, das ist also unbrauchbar als PZG (Pseudo-Zufallszahl-Generator). Darum nehmen wir Kongruenzen (Restklassen..), das heisst den Rest, der bei einer Division durch irgend ein "N" entsteht, und da gibt es immer N-1 Möglichkeiten. Dadurch sind Deine Zahlen immer zwischen 0 und N-1.

    Wie schon bereits erwähnt sind das natürlich keine echten Zufallszahlen. Echte Zufallszahlen kann man mit einem Rechner gar nicht erzeugen. Dafür bräuchte man Messgeräte, die natürliches chaotisches Verhalten messen und digitalisieren, wie etwa ein Geigerzähler. Ich glaube mich zu erinnern, dass LCDs auch gutes Rauschen erzeugen können, was man mit einer Lichtschranke digitalisieren kann.

    Soweit ich Dich verstanden habe, ist es ja Deine Aufgabe, das Problem zu lösen. Also sammle einfach mal konkrete Fragen, die wir Dir dann hier beantworten können

    Prinzip des Codes lässt sich ja im Wikiartikel auch direkt ablesen, in etwa:
    Code:
    class {
    int m, a, b, y;
    void init(int m, int a, int b, int y0) {
     if(a>=m || b>=m ) { throw WrongParameter; }
     this.m=m; this.a = a; ...
     this.y=y0;
    }
    int getRandom() {
     y = (a*y+b) % m;
     return y;
    }
    };
    
    (Sorry für mein schlechtes "Java". Ich mach kein Java.)
     
  4. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.