![]() |
mathematisches Problem (mod?)
Moin Leute !
Ich hab hier ein kleines Problem : Ich will zu einer zufallszahl (rand.val) vom typ Cardinal einen word wert (i2) hinzuaddieren, soweit kein Problem , aber wie kann ich jetzt das Ergenbnis diese addition so verändern das ich das ganze in eine Word Variable kriege und wie kann ich später aus diesem Ergebnis mit hilfe von rand.val wieder i2 rausfinden ? |
Re: mathematisches Problem (mod?)
also an sich kannst du einfach schreiben
wor: word; card: cardinal; wor:=card; wenn card > max von wor dann stellt sich die Frage nach dem Sinn card in wor speichern zu wollen...es passt halt net! |
Re: mathematisches Problem (mod?)
axo meinst du das ganze dann codiert abzuspeichern?
wenn card=123.456.789 dann wor:= 1,23456789 * 10^8 ? dat geht allerdings mit integer werten net! dann könnte z.B.: wor:=18234 sein. Stelle 1 = 1: erste Zahl Stelle 2 = 8: Anzahl der Stellen der Zahl -1 Stelle 3- : Die folgenden Zahlen nach der 1. Stelle war glaub ich umständlich ausgedrückt oder? |
Re: mathematisches Problem (mod?)
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:
oder in anderen Worten für Dein Beispiel: Es hat keinen Effekt ob Du einen Datentyp Cardinal oder Word als Zufallszahlverwendest.
(a + b) mod c = ((a mod c) + b) mod c
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
Code:
Du kennst also a (den Zufallswert), c (hier wg des Datentyps Word, 2^16) und den errechneten Wert d.
(a+b) mod c = 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). |
Re: mathematisches Problem (mod?)
Erstmal danke für die schnellen Antworten !
@ choose: hmm..., mal kucken : Wenn ich z.b a := 42 b := 25 c := 10 habe dann ist d:=(a+b) mod c also d := 7, dann ist d - einervon(a) = 7 - 2 = 5 , dann hab ich schon mal die erste stelle von b , aber wie komm ich dann auf die zehner ? |
Re: mathematisches Problem (mod?)
Zitat:
aus Deiner Eingansfrage Zitat:
Code:
gilt. In anderen Worten: "b hat weder einen Zehner noch einen Hunderter...".
0<=b<c => b mod c = (b+n*c) mod c
|
Re: mathematisches Problem (mod?)
aso , b kann jede Zahl im ganzen Word bereich sein.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:15 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz