AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Randomize o.O

Ein Thema von himitsu · begonnen am 25. Feb 2011 · letzter Beitrag vom 27. Feb 2011
Antwort Antwort
Seite 2 von 2     12
Benutzerbild von himitsu
himitsu

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

AW: Randomize o.O

  Alt 26. Feb 2011, 21:03
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.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#12

AW: Randomize o.O

  Alt 26. Feb 2011, 23:17
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.
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
Benutzerbild von rollstuhlfahrer
rollstuhlfahrer

Registriert seit: 1. Aug 2007
Ort: Ludwigshafen am Rhein
1.529 Beiträge
 
Delphi 7 Professional
 
#13

AW: Randomize o.O

  Alt 27. Feb 2011, 16:58
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
Bernhard
Iliacos intra muros peccatur et extra!
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Randomize o.O

  Alt 27. Feb 2011, 18:09
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.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von rollstuhlfahrer
rollstuhlfahrer

Registriert seit: 1. Aug 2007
Ort: Ludwigshafen am Rhein
1.529 Beiträge
 
Delphi 7 Professional
 
#15

AW: Randomize o.O

  Alt 27. Feb 2011, 18:15
Kommt ganz darauf an, ob man gleichverteilte Zufälle haben will oder nicht.

Bernhard
Bernhard
Iliacos intra muros peccatur et extra!
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Randomize o.O

  Alt 27. Feb 2011, 18:25
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.
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
 
#17

AW: Randomize o.O

  Alt 27. Feb 2011, 18:32
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:
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.
Peter
"Div by zero Error" oder auch: "Es geht auch ohne Signatur!".
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 14:03 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