Hallo braingrenade,
weil Du von einem "mathematischen Problem" und vom Restklassenoperator
mod sprichst, gehe ich davon aus, dass Du kein Problem mit Delphi hast.
Zunächst einmal gilt
Code:
(a + b) mod c = ((a mod c) + b) mod c
oder in anderen Worten für Dein Beispiel: Es hat keinen Effekt ob Du einen Datentyp Cardinal oder Word als Zufallszahlverwendest.
Wenn ich Dich richtig verstanden habe, besteht das eigentliche Problem in der Rekonstruktion der bekannten Zahl
b aus der Zufallszahl
a unter Verwendung eines beliebigen Exemplars
d der Restklasse
a+b mod c bei bekanntem
c, also
Du kennst also
a (den Zufallswert),
c (hier wg des Datentyps Word,
2^16) und den errechneten Wert
d.
Vielleicht wird das Ganze in einem "vertrauten Umfeld" deutlich:
Angenommen die beliebigte Zahl
a sei
42 und die bekannte Zahl
b sei 9. Weiterhin wolltest Du Restklassen zu
c mit
c=10 bilden, dann wäre ein beliebiges Exemplar
d der Restklasse
42+9 mod 10 zB
1. Oder anders ausgedrückt: Die letzte Ziffer der Summe
42+9 im Dezimalsystem ist eine
1.
Die Frage, die Du gestellt hast, lautet nun: Wie kommst Du von
1 unter Zuhilfenahme von
42 wieder auf eine
9? (Tipp: Betrachte nur die letzten Stellen, also
1 und
2. Schließlich betrachtest Du mit
c=10 nur die letzte Stelle im Dezimalsystem).