Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - Integerwerte aneinander-reihen?
NetZwerg - So 04.04.04 22:55
Titel: Integerwerte aneinander-reihen?
Hallo,
ich möchte zwei Zufalls-Integer werte aneinander reihen... Ich möchte sie allerdings nicht addieren. Wie mache ich das?
Delphi-Quelltext
1:
| Integer := (Random(4) + Random(4); |
Würde ja nur bewirken, das irgendwas zwischen 0 und 6 rauskommt. Ich möchte aber das zum Beispiel 35 oder 27 rauskommt!?
Tschüss, NetZwerg :nixweiss:
toms - So 04.04.04 22:57
Hi,
Dazu musst du zuerst beide Integer Werte in einen String umwandeln
und das Resultat wieder zurück in ein Integer.
Also so:
Delphi-Quelltext
1:
| Integer := StrToInt(IntToStr(Random(4)) +IntToStr(Random(3))) |
NetZwerg - So 04.04.04 22:58
aber es geht irgendwie nich...
Delphi-Quelltext
1:
| Should := StrToInt(IntToStr(Random(3))) + StrToInt(IntToStr(Random(3))); |
Should is mein integerwert. Dann kommt immer nur 2, 5 oder so raus!?
NetZwerg - So 04.04.04 23:09
oh, hab meinen fehler!
Ich muss ja nur einmal StrToInt() und zwischen die klammern muss das ganze gedöns!
Delphi-Quelltext
1:
| Should := StrToInt(IntToStr(Random(3)) + IntToStr(Random(3))); |
bms - So 04.04.04 23:21
edit: war ich wohl zu langsam
Delete - Mo 05.04.04 09:19
Hm... also für dein Beispiel würde mir aber noch was wesentlich einfacheres einfallen:
Delphi-Quelltext
1:
| Should := Random(3)*10 + Random(3); |
NetZwerg - Mo 05.04.04 10:01
ja, hat was... so könnte man's machen! Aber is ja gut das man ma weiß wie man sowas aneinanderreiht, jetz ma unabhängig von meinem beispiel... THX! :beer:
MSCH - Mo 05.04.04 17:58
noch einfacher :-)
da du nur Werte unterhalb des Wertebereiches eines Bytes erstellst (Random (3)...) wäre
auch gut, einfach die Bytes zu verschieben.
Pseudocode:
Quelltext
1: 2: 3:
| I:= Random(3); I:= I shl 8; I:= I and Byte(Random(2)); |
grez
msch
raziel - Mo 05.04.04 18:52
Quelltext
1: 2: 3:
| I:= Random(3); I:= I shl 8; I:= I and Byte(Random(2)); |
hier gibs aber dann nur 7 verschiedene ergebnisse (genauso viel wie am anfang...)!
[edit]is doch eins ergebnis mehr... (hab die null vergessen)[/edit]
tommie-lie - Mo 05.04.04 20:14
| MSCH hat folgendes geschrieben: |
noch einfacher :-)
da du nur Werte unterhalb des Wertebereiches eines Bytes erstellst (Random (3)...) wäre
auch gut, einfach die Bytes zu verschieben. |
Das würde aber nicht wie gewünscht funktionieren (zumindest nicht im Dezimalsystem) :roll:
Da wir hier keine BCD-Zahlen benutzen, steht nicht ein Byte für eine Zahl, sondern das ganze Byte für Zahlen von 0 bis 255. Bei deiner Schiebungsaktion würde also keine zweistellige Dezimalzahl rauskommen, sondern... was anderes (zu faul zum Denken bin :mrgreen:).
Die Lösung von Brainiac:
Should := Random(3)*10 + Random(3);ist also schon die einzig sinnvolle und kürzeste (man kann "*10" nicht mit einfachem shiften erreichen, und der MUL-Opcode dürfteda schon das schnellste sein).
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!