Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - Zufaellige Kommazahlen
flowstar - Di 10.02.04 17:04
Titel: Zufaellige Kommazahlen
Ist wahrscheinlich ne keichte Frage aber hab nichts dazu gefunden:
Wie erstelle zurfaellige ich Kommazahlen mit 2 Kommastellen im bereich von -3 bis+ 3?
Gausi - Di 10.02.04 17:39
Ich würde da so rangehen, einfach die Zahl aus zwei Zufallszahlen aufbauen. nur in Pseudocode, ich nehme mal an, dass du random() kennst:
Delphi-Quelltext
1: 2: 3:
| vorkomma:=Zufallszahl(-2,2) nachkomma:=Zufallszahl(0,99); gesamtzahl:=vorkomma + nachkomma/100; |
Andere Möglichkeit: (noch einfacher)
Delphi-Quelltext
1: 2:
| x:=Zufallszahl(-300,300); x:=x/100; |
Moderiert von
Peter Lustig: Code- durch Delphi-Tags ersetzt
catweasel - Di 10.02.04 20:28
| Zitat: |
x:=Zufallszahl(-300,300);
x:=x/100; |
Das ist die Frage, ob es so einfach ist ...
Wenn es wirklich
immer zwei Kommastellen sein sollen wäre
300/100 = 3 , oder 150/300 = 0,5 ungeeignet ...
Da bliebe wohl nur erste Variante (dabei die = "00", "10", "20" etc. per test ausschliessen). Also am besten gleich die nachkommaziffern einzeln erstellen...
Catweasel
Keldorn - Di 10.02.04 20:53
Hallo
Delphi-Quelltext
1:
| zahl:=(random(601)-300) / 100; |
Mfg Frank
catweasel - Di 10.02.04 23:44
| Zitat: |
| zahl:=(random(601)-300) / 100; |
Ähhh... :?: Hab ich da was verpasst, oder was soll daran so aufregend anders sein ?
Catweasel
Alni - Mi 11.02.04 00:15
Ich nehm einfach mal an er will die 2 Nachkommastellen haben egal ob sie 00 sind oder nicht. Deshalb würde ich die 2.Variante von Gausi verwenden und falls die Zahlen ausgegeben werden sollen einfach mit:
Delphi-Quelltext
1:
| edit1.text:=FloatToStrF(zahl,ffFixed,2,2); |
auf 2 stellen formatieren dann gibt er auch 3,00 aus
Ach ja er sollte es eigentlich so machen wie Keldorn da ja random(300) nur Zahlen bis 299 liefert
Moderiert von
Peter Lustig: Code- durch Delphi-Tags ersetzt
flowstar - Mi 11.02.04 00:22
danke für die Hilfe
habs jetzt auch so ähnlich gemacht, dachte es geibt sowas wie randomFloat(-3.0,3.0)
catweasel - Mi 11.02.04 00:32
| Zitat: |
habs jetzt auch so ähnlich gemacht, dachte es geibt sowas wie
randomFloat(-3.0,3.0) |
Naja spätestens jetzt gibts die wohl..:
(Ungetestet auf die Schnelle):
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7:
| function randomfloat(sr,ur:integer):real; var range : integer; begin range := max(sr,ur)-min(sr,ur); result := (random(range)-sr) / 100; end; |
Einmal geschrieben.. immer parat ;-)
Catweasel
flowstar - Mi 11.02.04 01:03
bei mir gibts die jetzt auch seit heute
Delete - Mi 11.02.04 21:36
Moin erstmal, war bisher eher bei SwissdelphiCenter aktiv, aber jetzt hab ich das Forum entdeckt, das mir auch sehr gut gefällt.
Hoffe mir wird immer geholfen, wenn ich mal eine Frage haben sollte.
Random übergibt, ohne Parameter aufgerufen, schon einen Fließkommawert zwischen 0 und 1.
=>
Quelltext
1: 2: 3: 4:
| function randomfloat(sr,ur:single):single; begin Result:=sr+random*(ur-sr); end; |
catweasel - Mi 11.02.04 22:51
| Zitat: |
| Moin erstmal, war bisher eher bei SwissdelphiCenter aktiv, aber jetzt hab ich das Forum entdeckt, das mir auch sehr gut gefällt. |
Na dann mal Herzlich Willkommen... :-)
(Obwohl das eher Tino als "Gastgeber" sagen sollte ;-) )
| Zitat: |
| Hoffe mir wird immer geholfen, wenn ich mal eine Frage haben sollte. |
Na ich denke hier wird keiner aus Boshaftigkeit schweigen :-)
| Zitat: |
| Random übergibt, ohne Parameter aufgerufen, schon einen Fließkommawert zwischen 0 und 1 |
Und wieviel Dezimalstellen hat der ?
Catweasel
Anonymous - Mi 11.02.04 22:55
Maximal 18, so wies aussieht
Delete - Mi 11.02.04 23:15
Also Übergeben wird es ja direkt über den FPU stack, sprich maximal als extended.
Je nach dem, welche Konstanten jetzt die random Funktion verwendet, sind mehr oder weniger Stellen davon wirklich gut durchmischt. Ändern tun sich aber alle Stellen bei jedem Aufruf.
Random mit Parameter multipliziert eigentlich auch den übergebenen Integer mit diesem Wert und rundet dann.
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!