AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Zufallszahl mit Kommerstellen

Ein Thema von daNiii · begonnen am 7. Mär 2009 · letzter Beitrag vom 9. Mär 2009
Antwort Antwort
Seite 1 von 4  1 23     Letzte »    
daNiii

Registriert seit: 10. Nov 2008
98 Beiträge
 
Turbo Delphi für Win32
 
#1

Zufallszahl mit Kommerstellen

  Alt 7. Mär 2009, 14:05
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!
  Mit Zitat antworten Zitat
Noedel

Registriert seit: 7. Aug 2008
204 Beiträge
 
Delphi 7 Professional
 
#2

Re: Zufallszahl mit Kommerstellen

  Alt 7. Mär 2009, 14:07
Delphi-Quellcode:
var zahl: extended;
begin
zahl := random
end;
-"Was studierst du eigentlich? Nerdologie?"
-"Informatik..."
-"Wusst ich´s doch!"
  Mit Zitat antworten Zitat
Benutzerbild von Corpsman
Corpsman

Registriert seit: 8. Nov 2005
Ort: nähe Stuttgart
981 Beiträge
 
Delphi XE2 Professional
 
#3

Re: Zufallszahl mit Kommerstellen

  Alt 7. Mär 2009, 14:07
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;
Uwe
My Sitewww.Corpsman.de

My marble madness clone Balanced ( ca. 70,0 mb ) aktuell ver 2.01
  Mit Zitat antworten Zitat
Noedel

Registriert seit: 7. Aug 2008
204 Beiträge
 
Delphi 7 Professional
 
#4

Re: Zufallszahl mit Kommerstellen

  Alt 7. Mär 2009, 14:12
Zitat von Corpsman:
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;
meinst du nicht, dass der Vorschlag s.o. einfacher ist?

p.s: habe vergessen, dass randomize noch aufgerufen werden muss, bevor man ne zahl generiert...
p.p.s:KommA schreibt man nicht mir "er"
-"Was studierst du eigentlich? Nerdologie?"
-"Informatik..."
-"Wusst ich´s doch!"
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.344 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: Zufallszahl mit Kommerstellen

  Alt 7. Mär 2009, 14:13
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.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.135 Beiträge
 
Delphi 12 Athens
 
#6

Re: Zufallszahl mit Kommerstellen

  Alt 7. Mär 2009, 14:20
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

Range(2) würde da eine 0 oder 1 liefern, da 0 <= X < 2


Range ohne Parameter liefert eine Gleitkommazahl im Bereich von
0 <= X < 1

also eine Zahl von 0 bis 0,999.....
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
daNiii

Registriert seit: 10. Nov 2008
98 Beiträge
 
Turbo Delphi für Win32
 
#7

Re: Zufallszahl mit Kommerstellen

  Alt 7. Mär 2009, 14:21
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:
procedure Form1.Zufallszahl_bilden();
var
Zufallszahl: extended;
Wert: string;
begin

Zufallszahl:= (random(1));
randomize;
Wert:= FormatFloat('0.00', Zufallszahl);
showmessage(floattostr(Wert);
end;
Danke!
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.135 Beiträge
 
Delphi 12 Athens
 
#8

Re: Zufallszahl mit Kommerstellen

  Alt 7. Mär 2009, 14:23
Zitat von daNiii:
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
ließ nochmal in deiner OH unter Delphi-Referenz durchsuchenRandomize nach, da steht dann auch, daß man dieses nicht immer aufrufen soll, sondern nur einmal beim Programmstart.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Teekeks

Registriert seit: 19. Okt 2008
Ort: Dresden
765 Beiträge
 
FreePascal / Lazarus
 
#9

Re: Zufallszahl mit Kommerstellen

  Alt 7. Mär 2009, 14:31
und das:
Delphi-Quellcode:
Zufallszahl:= (random(1));
randomize;
ist auch die falsche reinfolge...
Peter
"Div by zero Error" oder auch: "Es geht auch ohne Signatur!".
  Mit Zitat antworten Zitat
Noedel

Registriert seit: 7. Aug 2008
204 Beiträge
 
Delphi 7 Professional
 
#10

Re: Zufallszahl mit Kommerstellen

  Alt 7. Mär 2009, 14:33
Darf ich nochmal vergleichen? Deine lösung:

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;
meine Lösung:
Delphi-Quellcode:
procedure Form1.Zufallszahl_bilden();
var
 zufallszahl: extended;
begin
  //Randomize bereits "aktiviert"
  zufallszahl := random;
  showmessage(floattostr(zahl);
end;
welche macht sich besser?
-"Was studierst du eigentlich? Nerdologie?"
-"Informatik..."
-"Wusst ich´s doch!"
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 4  1 23     Letzte »    


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:32 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz