Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Randomize mehrmals starten (https://www.delphipraxis.net/104183-randomize-mehrmals-starten.html)

Chrissi91 28. Nov 2007 19:13


Randomize mehrmals starten
 
Hi,

endlich mal ein Thema, das es laut Suche noch nicht in der DP gab.

Unser Infolehrer hat behauptet, dass es nicht gut sei, mehrmals Randomize; zu schreiben.

Wie sieht es aus? Stimmmt das? Ich denke das is dem PC egal. ^^

DeddyH 28. Nov 2007 19:16

Re: Randomize mehrmals starten
 
Wozu den Zufallsgenerator mehrmals starten? Wenn mein Auto läuft, lass ich den Anlasser auch in Ruhe.

Dax 28. Nov 2007 19:18

Re: Randomize mehrmals starten
 
Es ist nicht gut. Wenn du das mehrmals machst, wird der Zufallsgenerator mehrmals neu initialisiert, und da Randomize auf Basis von GetTickCount und damit im Millisekunden-Bereich arbeitet... Nun, am besten ein Beispiel.
Delphi-Quellcode:
var a: Integer;

Randomize;
a := Random(1000);
Randomize;
a := a - Random(1000);
a wird nahezu immer 0 sein, da der Zufallsgenerator zwei mal initialisiert wird, und dies wahrscheinlich mit dem selben Seed (4 Calls brauchen keine Millisekunde)...

thkerkmann 28. Nov 2007 19:19

Re: Randomize mehrmals starten
 
Hi

Dem PC ist das sicherlich egal :-D

Aber:
Der Zufallszahlengenerator erzeugt eine gleichverteilte Reihe von Zufallszahlen, ab einem bestimmten Startwert.
Wenn dieser Startwert gleich ist, kommt auch immer die gleiche Reihe heraus. Das kann man leicht nachprüfen, indem man Randomize nicht aufruft.

Wenn jetzt innerhalb der Reihe Randomize erneut aufgerufen wird, wird praktisch eine neue Zufallsreihe begonnen, die die Gleichverteilung der ersten Reihe umwerfen KÖNNTE.
Ich sage KÖNNTE, nicht muss.

Wenn man es also statistisch ganz genau nehmen will, so sollte man Randomize nur einmal aufrufen.

Gruss

alzaimar 28. Nov 2007 20:14

Re: Randomize mehrmals starten
 
Zitat:

Zitat von Dax
... Randomize auf Basis von GetTickCount

GetSystemTime, um genau zu sein, kommt aber aufs Gleiche raus.

Mit dem Zufall ist das ja so eine Sache. Ich würde sagen, der Lehrer hat Recht, sich aber nicht 100% korrekt ausgedrückt.

Luckie 28. Nov 2007 20:36

Re: Randomize mehrmals starten
 
Und das Thema hatten wir schon im Forum: Hier im Forum suchenrandomize.

mimi 29. Nov 2007 17:29

Re: Randomize mehrmals starten
 
Der Lehrer hätte euch auch den Grund dafür nennen können.

Du kannst Randomize aufrufen aber nicht hintereinander, zeitversetzt...
z.b. bei einem Spiel rufst du einfach Randomize alle 60 Sekunden auf... oder so....

alzaimar 29. Nov 2007 17:33

Re: Randomize mehrmals starten
 
Zitat:

Zitat von mimi
z.b. bei einem Spiel rufst du einfach Randomize alle 60 Sekunden auf... oder so....

:gruebel: wozu soll das gut sein? Damit der Zufall noch zufälliger wird?

mimi 29. Nov 2007 18:05

Re: Randomize mehrmals starten
 
Du hast es erfasst *G*, ob es sin macht oder nicht ist ja eine andere Frage, aber es währe eine Möglichkeit.... oder nicht ?

Amateurprofi 29. Nov 2007 18:22

Re: Randomize mehrmals starten
 
Zitat:

Zitat von alzaimar
Zitat:

Zitat von mimi
z.b. bei einem Spiel rufst du einfach Randomize alle 60 Sekunden auf... oder so....

:gruebel: wozu soll das gut sein? Damit der Zufall noch zufälliger wird?

Das ist gut, weil man sonst (wenn Randomize nur einmal aufgerufen wird) unter bestimmten Voraussetzungen ohne große Probleme vorhersagen kann, welches die nächste "Zufallszahl" ist, wenn die ersten paar "Zufallszahlen" bekannt sind.


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:41 Uhr.
Seite 1 von 3  1 23      

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