Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - Zufalls Nachkomma Zahlen


theSonGoku - Sa 03.10.09 17:24
Titel: Zufalls Nachkomma Zahlen
Hallo,

unzwar möchte ich, in einem Array, Zufallszahlen zwischen 0 und 10 generieren.

Z.B:

Quelltext
1:
2:
3:
1,00121
0,24121
8,21480

Also eben Nachkommerzahlen zwischen 0 und 10.

Ich bekomme auch Zufallszahlen. Aber keine Nachkommazahlen. Wie mache ich das? Mein Code:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
procedure TForm1.btn_generierenClick(Sender: TObject);
var   werte: array[0..40..1of extended;
      i, k: integer;
begin
randomize;
for i := 0 to 4 do
  begin
  werte[i,0] := randomrange(010);
  end;

for k := 0 to 4 do
  begin
  werte[k,1] := randomrange(030);
  end;

lbl_1.Caption := FloatToStr(werte[0,0]) + ' * ' + FloatToStr(werte[0,1]);
lbl_2.Caption := FloatToStr(werte[1,0]) + ' * ' + FloatToStr(werte[1,1]);
lbl_3.Caption := FloatToStr(werte[2,0]) + ' * ' + FloatToStr(werte[2,1]);
lbl_4.Caption := FloatToStr(werte[3,0]) + ' * ' + FloatToStr(werte[3,1]);
lbl_5.Caption := FloatToStr(werte[4,0]) + ' * ' + FloatToStr(werte[4,1]);
end;

mfG
theSonGoku

Moderiert von user profile iconNarses: Delphi-Tags hinzugefügt


jakobwenzel - Sa 03.10.09 17:59

Random ohne Parameter liefert Kommazahlen zwischen 0 und 1, das mit 10 multipliziert ist das was du willst.


platzwart - Sa 03.10.09 18:02


Delphi-Quelltext
1:
zahl:= random(99999)/10000;                    


Moderiert von user profile iconNarses: Delphi-Tags hinzugefügt


theSonGoku - Sa 03.10.09 20:51

user profile iconplatzwart hat folgendes geschrieben Zum zitierten Posting springen:
zahl:= random(99999)/10000;


Danke für die Antwort. :)

Funktioniert prima. :)

Kannst du mir allerdings erklären, wieso du 99999 und 10000 geschrieben hast?
Was haben die Zahlen zu bedeuten?


mfG
theSonGoku


platzwart - Sa 03.10.09 21:31

random(99999) erzeugt eine ganzzahlige Zufallszahl zwischen 0 und 99999. Weil der Wert nun aber kleiner 10 und größer gleich Null sein soll, wird der Wert durch 10000 geteilt ;)


Kha - Sa 03.10.09 22:53

user profile iconplatzwart hat folgendes geschrieben Zum zitierten Posting springen:
random(99999) erzeugt eine ganzzahlige Zufallszahl zwischen 0 und 99999.
Nope, zwischen 0 und 99998 - ein großer Unterschied :D .
user profile iconplatzwart hat folgendes geschrieben Zum zitierten Posting springen:
Weil der Wert nun aber kleiner 10 und größer gleich Null sein soll[...]
Weshalb die untere Schranke ein-, aber die obere einschließen :nixweiss: ?

Anstatt deinen Code zu korrigieren, wäre es mir allerdings lieber, wenn wir uns darauf einigen könnten, dass user profile iconjakobwenzels Vorschlag eindeutig der bessere ist :zwinker: .


platzwart - So 04.10.09 11:53

Nein, der funktioniert so nicht. Der liefert nämlich keine Zahl mit 5 Nachkommastellen ;) Aber dessen Ansatz ein wenig überarbeitet wäre sicherlich die beste Lösung ;)


BenBE - So 04.10.09 23:41

Von 5 Nachkommastellen hattest du oben nichts geschrieben ... Von daher ist Jakobs Vorschlag durchaus valide ;-)