Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi random generator (https://www.delphipraxis.net/14508-random-generator.html)

gundi 10. Jan 2004 17:10


random generator
 
hallo leute ich bin ein neuer programmierer und versuche nachvollziehen warum ich bei random generator durch randomize initialisieren muss??? was bedeutet konkret initialisieren???

moritz 10. Jan 2004 17:16

Re: random generator
 
Hallo

Initialisieren bedeutet sowas wie "Meine Damen und Herren, wir Landen in wenigen Minuten. Bitte machen sie die Rückenlehnen gerade, klappen sie die Tische ein, Rauchen nicht und besuchen keine Toiletten" im Flugzeug. Gut, trifft es vielleicht nicht ganz so gut aber ist einigermasen Anschaulich.(Die Randomfunktion wäre dann das Landen :D Allerdings müsste ein Flugzeug dann mehrmals Landen können .. egal :D )
Was genau Randomize macht kann ich nur vermuten. Es setzt, da die Randomfunktion einen Amhaltswert braucht, diesen auf GetTickCount, also die ms, die das Programm schon läuft.

Gruß

Brüggendiek 10. Jan 2004 19:37

Re: random generator
 
Hallo!

Wenn das Randomize nicht ausgeführt wird, kommt in der Regel bei jedem Programmaufruf dieselbe Folge von Zufallszahlen. Theoretisch kann man das ausnutzen, indem man RandSeed auf einen festen Wert setzt (ohne Initialisierung wäre das 0). Sollte man aber nicht, denn laut Delphi-Hilfe "kann sich die Implementation in späteren Versionen ändern" - d.h. dann kommt 'ne andere Zahlenfolge.

Randomize setzt den Startwert des Zufallsgenerators auf die Uhrzeit (nicht die Zeit seit Programmstart).

Ein häufig zu findender Fehler ist es,
Delphi-Quellcode:
Randomize;
wert:=Random(grenze);
zu schreiben - bei genügend schnellem Aufruf (z.B. in einer Schleife) gibt das eine Folge von gleichen Zahlen. Randomize wird nur einmal im Programmlauf aufgerufen - OnCreate der Mainform oder der Initialisation-Abschnitt einer Unit wären angemessene Orte dafür.

Gruß

Dietmar Brüggendiek


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