Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Randomize o.O (https://www.delphipraxis.net/158670-randomize-o-o.html)

himitsu 26. Feb 2011 20:03

AW: Randomize o.O
 
Randomize als leere Funktion ohne Funktion,
für RandSeed eine ThreadVar, statt einem normalen Var
und beim ThreadInit jeweils das eigentliche Randomize.

Keine Änderung an alten Programmen, die neuen Programme sind automatisch threadsicher und mehrfache Aufrufe von Randomize haben keine Auswirkung.

Bummi 26. Feb 2011 22:17

AW: Randomize o.O
 
Wenn man sich die Implenetierung von Randomize ansieht verstehe ich das "Gewese" im Sinne von "Nur einmal aufrufen" ohnehin nicht.
Wenn man keine Loops in der Art
Delphi-Quellcode:
For i := x to y do
begin
   Randomize;
  x := Random(z);
  Use(x)
end
kann man IMHO Randomize so oft aufrufen wie man will.

rollstuhlfahrer 27. Feb 2011 15:58

AW: Randomize o.O
 
Bei deinem Beispiel geht das aber nicht gut. Da die Schleife viel zu schnell durchläuft, setzt Randomize immer wieder RandSeed auf den aktuellen Timer-Wert. Somit wird (dem Algo sei dank ^^) immer wieder die gleiche Zufallszahl generiert. Oder hat sich da seit D7 was geändert?

Bernhard

himitsu 27. Feb 2011 17:09

AW: Randomize o.O
 
Man hat inzwischen getTickCount gegen QueryPerformanceCounter ersetzt, so daß sowas zum Glück nur noch selten passiert.

Aber, ...

Derartige Pseudozufallsgeneratoren sind auf eine möglichst optimale "Gleichverteilung" ausgelegt
und wenn man Randomize zu häufig aufruft, dann könnte sich dieses negativ auf die Verteilung der erzeugten Zahlen auswirken.

rollstuhlfahrer 27. Feb 2011 17:15

AW: Randomize o.O
 
Kommt ganz darauf an, ob man gleichverteilte Zufälle haben will oder nicht.

Bernhard

himitsu 27. Feb 2011 17:25

AW: Randomize o.O
 
So könnte man aber keinen Einfluß auf die Verteilung nehmen.

Wenn man wirklich keine Gleichverteilung will, dann sollte man doch lieber eine Gewichtung einführen.

Teekeks 27. Feb 2011 17:32

AW: Randomize o.O
 
Zitat:

Zitat von rollstuhlfahrer (Beitrag 1084682)
Bei deinem Beispiel geht das aber nicht gut. Da die Schleife viel zu schnell durchläuft, setzt Randomize immer wieder RandSeed auf den aktuellen Timer-Wert. Somit wird (dem Algo sei dank ^^) immer wieder die gleiche Zufallszahl generiert. Oder hat sich da seit D7 was geändert?

Bernhard

^^
Guck dir doch noch mal bitte genau an was er geschrieben hat:
Zitat:

Zitat von Bummi (Beitrag 1084609)
Wenn man keine Loops in der Art
Delphi-Quellcode:
For i := x to y do
begin
   Randomize;
  x := Random(z);
  Use(x)
end
kann man IMHO Randomize so oft aufrufen wie man will.



Alle Zeitangaben in WEZ +1. Es ist jetzt 23:20 Uhr.
Seite 2 von 2     12   

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