Java :: Aufgabe #181
1 Lösung

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").
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").
Lösungen:

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)); } }