Java :: Aufgabe #181 :: Lösung #1

1 Lösung Lösung öffentlich
#181

Ermittlung der Periodenlänge einer unendlichen Zahlenfolge

Anfänger - Java von hollst - 12.09.2017 um 12:58 Uhr
Wir betrachten eine Zahlenfolge N mit den Parametern n0, a, b und m (alles natürliche Zahlen > Null),
die iterativ definiert ist durch

N(i + 1) = (a * N(i) + b) mod m

und

N(0) = n0.

Diese Zahlenfolge wird naturgemäß ab einem bestimmten Startglied periodisch weiterverlaufen mit einer
Periodenlänge F, wobei immer 0 < F < m + 1 sein wird.

Man schreibe ein Program, das die Parameter n0, a, b und m als natürliche Zahlen entgegennimmt und
die Periodenlänge F rückgibt.

Anmerkung: Im Falle F = m stellen die Glieder einer Periode von N Pseudo-Zufallszahlen mit dem Bereich 0 ... m - 1 dar,
man kann somit seinen eigenen Zufallsgenerator kreiren (ist allerdings nicht (kaum) geeignet für kryptische Verschlüsselungen,
da relativ leicht "knackbar").
#1
vote_ok
von frogmaster (60 Punkte) - 26.09.2017 um 21:15 Uhr
Quellcode ausblenden Java-Code
public class Periodenlänge {

    public static int periodenlaenge(int n, int a, int b, int m) {
        int periodenlaenge = 0;

        while (periodenlaenge < m) {
            n = (a + n + b) % m;
            periodenlaenge++;
        }

        return periodenlaenge;
    }

    public static void main(String[] args) {
        System.out.println(periodenlaenge(1, 2, 3, 4));
    }

}

Kommentare:

Für diese Lösung gibt es noch keinen Kommentar

Bitte melden Sie sich an um eine Kommentar zu schreiben.
Kommentar schreiben