Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   mathematisches Problem (mod?) (https://www.delphipraxis.net/12142-mathematisches-problem-mod.html)

braingrenade 21. Nov 2003 13:27


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 ?

Minz 21. Nov 2003 13:52

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!

Minz 21. Nov 2003 13:59

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?

choose 21. Nov 2003 14:14

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:
(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
Code:
(a+b) mod c = d
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).

braingrenade 21. Nov 2003 15:59

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 ?

choose 21. Nov 2003 16:16

Re: mathematisches Problem (mod?)
 
Zitat:

Zitat von braingrenade
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 ?

Hallo braingrenade,

aus Deiner Eingansfrage
Zitat:

Zitat von braingrenade
Ich will zu einer zufallszahl [...] einen word wert [...] hinzuaddieren, [...] aber wie kann ich jetzt das Ergenbnis [...] so verändern das ich das ganze in eine Word Variable kriege [...]und wie kann [...] aus diesem Ergebnis mit hilfe von [der Zufallszahl] wieder [den Wortwert] rausfinden ?

habe ich geschlossen, dass
Code:
0<=b<c  =>  b mod c = (b+n*c) mod c
gilt. In anderen Worten: "b hat weder einen Zehner noch einen Hunderter...".

braingrenade 21. Nov 2003 16:19

Re: mathematisches Problem (mod?)
 
aso , b kann jede Zahl im ganzen Word bereich sein.


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:28 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz