Autor Beitrag
flowstar
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 123

WinME
D6 Enterprise
BeitragVerfasst: Di 10.02.04 17:04 
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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 8554
Erhaltene Danke: 481

Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
BeitragVerfasst: 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:
ausblenden Delphi-Quelltext
1:
2:
3:
vorkomma:=Zufallszahl(-2,2)
nachkomma:=Zufallszahl(0,99);
gesamtzahl:=vorkomma + nachkomma/100;


Andere Möglichkeit: (noch einfacher)
ausblenden Delphi-Quelltext
1:
2:
x:=Zufallszahl(-300,300);
x:=x/100;


Moderiert von user profile iconPeter Lustig: Code- durch Delphi-Tags ersetzt

_________________
We are, we were and will not be.
catweasel
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 487
Erhaltene Danke: 1

Win 7 64bit
Delphi 7 Second Sedition V7.2
BeitragVerfasst: 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

_________________
Pommes werden schneller fertig wenn man sie vor dem Frittieren einige Minuten in siedendes Fett legt.
Keldorn
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 2266
Erhaltene Danke: 4

Vista
D6 Prof, D 2005 Pro, D2007 Pro, DelphiXE2 Pro
BeitragVerfasst: Di 10.02.04 20:53 
Hallo

ausblenden Delphi-Quelltext
1:
zahl:=(random(601)-300) / 100;					


Mfg Frank

_________________
Lükes Grundlage der Programmierung: Es wird nicht funktionieren.
(Murphy)
catweasel
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 487
Erhaltene Danke: 1

Win 7 64bit
Delphi 7 Second Sedition V7.2
BeitragVerfasst: 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

_________________
Pommes werden schneller fertig wenn man sie vor dem Frittieren einige Minuten in siedendes Fett legt.
Alni
ontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic starofftopic star
Beiträge: 205

Win 2000, XP, SuSe, Debian
D5 Prof, D7 Prof, Kylix
BeitragVerfasst: 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:
ausblenden 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 user profile iconPeter Lustig: Code- durch Delphi-Tags ersetzt

_________________
MfG Alex


Zuletzt bearbeitet von Alni am Mi 11.02.04 00:35, insgesamt 1-mal bearbeitet
flowstar Threadstarter
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 123

WinME
D6 Enterprise
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 487
Erhaltene Danke: 1

Win 7 64bit
Delphi 7 Second Sedition V7.2
BeitragVerfasst: 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):

ausblenden 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

_________________
Pommes werden schneller fertig wenn man sie vor dem Frittieren einige Minuten in siedendes Fett legt.
flowstar Threadstarter
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 123

WinME
D6 Enterprise
BeitragVerfasst: Mi 11.02.04 01:03 
bei mir gibts die jetzt auch seit heute
Brainiac
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: 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.

=>
ausblenden Quelltext
1:
2:
3:
4:
function randomfloat(sr,ur:single):single; 
begin 
 Result:=sr+random*(ur-sr);
end;
catweasel
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 487
Erhaltene Danke: 1

Win 7 64bit
Delphi 7 Second Sedition V7.2
BeitragVerfasst: 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

_________________
Pommes werden schneller fertig wenn man sie vor dem Frittieren einige Minuten in siedendes Fett legt.
obbschtkuche
Gast
Erhaltene Danke: 1



BeitragVerfasst: Mi 11.02.04 22:55 
Maximal 18, so wies aussieht
Brainiac
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: 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.