![]() |
Zufallszahl mit Kommerstellen
Was mache ich bloß falsch? Mein Ziel ist es eine Zufallszahl zu erstellen zwischen 0 und 1.
Das Ergebniss soll in Kommerstellen ausgegenen werden. (zB. 0,9786523) Hier ist mein Programmieransatz:
Delphi-Quellcode:
procedure Form1.Zufallszahl_bilden();
var Zufallszahl: extended; Wert: string; begin Zufallszahl:= trunc(random(1) +0); randomize; Wert:= FormatFloat('0.00', Zufallszahl); showmessage(floattostr(Wert); end; Derzeit wird in meinem showmessage stets die Zahl 0,00 ausgegeben. Ich hoffe mir kann jemand helfen und mich auf meinen Fehler aufmerksam machen. Danke! |
Re: Zufallszahl mit Kommerstellen
Delphi-Quellcode:
var zahl: extended;
begin zahl := random end; |
Re: Zufallszahl mit Kommerstellen
Das Problem ist das Trunc
es schneidet den Nachkommateil ab deswegen kommt immer 0 raus, so dürfte es besser sein.
Delphi-Quellcode:
procedure Form1.Zufallszahl_bilden();
var Zufallszahl: extended; Wert: string; begin Zufallszahl:= (random(1)); randomize; Wert:= FormatFloat('0.00', Zufallszahl); showmessage(floattostr(Wert); end; |
Re: Zufallszahl mit Kommerstellen
Zitat:
p.s: habe vergessen, dass randomize noch aufgerufen werden muss, bevor man ne zahl generiert... :D p.p.s:KommA schreibt man nicht mir "er" :P |
Re: Zufallszahl mit Kommerstellen
Nein, wie schon geschrieben wurde: Ohne Parameter...
Random mit 1 als Parameter gibt einen Integerwert zwischen 0 und 1 ohne die 1 selbst zurück... Random ohne Parameter gibt einen Fließkommawert zwischen 0 und 1 zurück. |
Re: Zufallszahl mit Kommerstellen
Random(1) liefert doch schon einen Integer (bemnach ist Trunc da sinnlos),
allerdings im Bereich von 0 <= X < Range also bei 1 immer eine 0, da 0 <= X < 1
Delphi-Quellcode:
würde da eine 0 oder 1 liefern, da 0 <= X < 2
Range(2)
Range ohne Parameter liefert eine Gleitkommazahl im Bereich von 0 <= X < 1 also eine Zahl von 0 bis 0,999..... |
Re: Zufallszahl mit Kommerstellen
Danke für eure Zahlreichen Antworten!
vorher habe ich noch nicht gewusst, was Trunc bedeutet. ich hatte jedoch noch einen 2. Fehler. nämlich: Man muss zuerst randomize; schreiben bevor man die Zufallszahl bildet. Für die Richtigstellung, hier noch einmal die richtige Lösung
Delphi-Quellcode:
Danke! :-D
procedure Form1.Zufallszahl_bilden();
var Zufallszahl: extended; Wert: string; begin Zufallszahl:= (random(1)); randomize; Wert:= FormatFloat('0.00', Zufallszahl); showmessage(floattostr(Wert); end; |
Re: Zufallszahl mit Kommerstellen
Zitat:
![]() |
Re: Zufallszahl mit Kommerstellen
und das:
Delphi-Quellcode:
ist auch die falsche reinfolge...
Zufallszahl:= (random(1));
randomize; |
Re: Zufallszahl mit Kommerstellen
Darf ich nochmal vergleichen? Deine lösung:
Delphi-Quellcode:
meine Lösung:
procedure Form1.Zufallszahl_bilden();
var Zufallszahl: extended; Wert: string; begin Zufallszahl:= (random(1)); randomize; Wert:= FormatFloat('0.00', Zufallszahl); showmessage(floattostr(Wert); end;
Delphi-Quellcode:
welche macht sich besser?
procedure Form1.Zufallszahl_bilden();
var zufallszahl: extended; begin //Randomize bereits "aktiviert" zufallszahl := random; showmessage(floattostr(zahl); end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:12 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz