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

#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").
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

von frogmaster (60 Punkte)
- 26.09.2017 um 21:15 Uhr

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
Seite 1 von 0
1