Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Prism Zufalls zahlen mit real... (https://www.delphipraxis.net/72144-zufalls-zahlen-mit-real.html)

daredd 26. Jun 2006 11:08


Zufalls zahlen mit real...
 
Ich hatte einen Zufallsgenerator der mir Zahlen ausgespuckt hat als Integer, nun möchte ich abe das es als Real (zahlen mit Komma) ausgeworfen werden.
Das man das machen kann in dem man jede einzelne Zahl vor den Komma und nach dem Komma aus integer-Zahlen berechnet und dann nur ein komma zwischen das ergebnis setzt weiss ich auch.
Ich brauch aber echte zufalls-Dezimalzahlen!!!

Hier mein code:
Delphi-Quellcode:
 procedure TForm1.Zufall(Sender: TObject);
  var
  nZ181, sZ181, nZ261, sZ261, nZ341, sZ341, nZ421, sZ421, nZ491, sZ491,
  nZ581, sZ581, nZ661, sZ661, nZ741, sZ741, sZ821 : real;
begin
Randomize;
NSpin18.Text:=IntToStr(Random(nz181));
SSpin18.Text:=IntToStr(Random(sz181));
NSpin26.Text:=IntToStr(Random(nz261));
Danke euch!!!

himitsu 26. Jun 2006 11:19

Re: Zufalls zahlen mit real...
 
Also im Win32 gibt RANDOM (ohne Parameter) einen Wert von 0 <= x < 1 aus.

den kannst du dann entsprechend hoch/runterrechnen.

also für 0 bis 0.499999 = Random / 2
und für 0 bis 9.99999 = Random * 10
usw.

ich denke mal sowas wird auch in .Net möglich sein ^^

morri 26. Jun 2006 11:28

Re: Zufalls zahlen mit real...
 
Zitat:

Ich brauch aber echte zufalls-Dezimalzahlen!!!
Sind denn die anderen keine ECHTEN realzufallszahlen.
Man hätte sich ja auch eine Funktion basteln können, die beim Aufruf eine echte real zufallszahl ausgibt und intern genau das macht, was du schon gewusst hast...

himitsu 26. Jun 2006 11:36

Re: Zufalls zahlen mit real...
 
Na ja, echte Zufalszahlen bekommt man eh nicht (die werden alle irgendwie mathematisch berechnet), es sei denn man baut sich irgend ein Teil ein, welches hardwaremäßig "echte" Zufallszahlen erstellt.

Ach ja ... Random(100) / 10 = 0.0 bis 9.9 ... so ginge es och :roll:


PS: Random (oP) holt sich auch erst 'nen Integer und rechnet denn dan in einen DOUBLE um ... also kommt man wohl besser, wenn man sich auch erst 'nen Integer holt und den dann selber umrechnet (lieber 'ne zusätzliche schnellere Interger-Operation, statt 'ner langsameren Float-Operation)

daredd 26. Jun 2006 12:04

Re: Zufalls zahlen mit real...
 
Na gut ich werde mal sehen was sich machen lässt danke für eure hilfe

himitsu 26. Jun 2006 12:29

Re: Zufalls zahlen mit real...
 
Mit der Integer-Variante läßt sich oftmal aber auch leichter arbeiten.

z.B. wenn du Werte in einem bestimmten bereich haben willst, also nicht
0 <= x < z
, sondern 0 <= x <= z
, wie z.B.

0.00 bis 10.00 und nicht 0.00 bis etwas kleiner als 10.00

Code:
r := Random(100[color=#ff0000]1[/color]) / 100;
r := Random * 10 + [color=#ff0000]0.0000[/color][color=silver]...[/color][color=#ff0000]1[/color];
weil Random * 10 ja einen Wert von 0.0... bis 9.999999999999 ausgibt.


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:30 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