Delphi-PRAXiS
Seite 2 von 5     12 34     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Besseres Random() - eure Vorschläge (https://www.delphipraxis.net/202652-besseres-random-eure-vorschlaege.html)

TurboMagic 25. Nov 2019 20:21

AW: Besseres Random() - eure Vorschläge
 
1. Ich bekomme bei beiden Links von dir 502 - Bad Gateway.

2. Die DEC hat auch einen Zufallszahlengenerator, aber frage mich
bitte nicht zu dessen Qualität. Du darfst aber gerne so eine
Verteilungskurve anfertigen, würde mich auch interessieren.

https://github.com/winkelsdorf/Delph...tionCompendium

Grüße

TurboMagic

DieDolly 25. Nov 2019 20:27

AW: Besseres Random() - eure Vorschläge
 
Vom DEC habe ich noch keine Verteilungsgrafik. Aber die vom Wel1024 ist interessant denn die sieht genau so schlimm aus wie die vom standard Random.
Das liegt meiner Meinung nach an der Initialisierung, die mit Random stattfindet.

Die beste Verteilung mit der besten Performance und dem wenigstens Overhead hat bisher MT19937 (Mersenne Twister, vom 21.6.2000: http://www.rksolution.cz/delphi/dtip0008.txt ) aber damit gibt es Probleme mit 64bit wie man hier sieht
https://www.delphipraxis.net/202655-...ml#post1452105

Frickler 26. Nov 2019 08:13

AW: Besseres Random() - eure Vorschläge
 
Zitat:

Zitat von DieDolly (Beitrag 1452095)
Kann man Mersenne und WellRng1024 denn vergleichen? Weil WellRng1024 bietet keine Range die man angeben kann.

Beides sehr sehr interessante Methoden. Funktioniert Well1024 auch mit einem Maximum? RandomRange brauche ich eher weniger (wäre trotzdem schön!).

RandomFloat gibt eine Zahl zwischen 0 und 1. Daraus kann man jeden beliebigen Range selbst stricken.

Codehunter 26. Nov 2019 08:30

AW: Besseres Random() - eure Vorschläge
 
Echte Zufallszahlen in der IT sind doch von Beginn an ein Streitthema ^^

https://www.heise.de/ct/artikel/Linu...te=5#nav__a__0

TurboMagic 26. Nov 2019 17:54

AW: Besseres Random() - eure Vorschläge
 
Zitat:

Zitat von DieDolly (Beitrag 1452114)
Vom DEC habe ich noch keine Verteilungsgrafik.

Du könntest ja mal versuchen eine zu machen, dann würden wir sehen, ob die auch so schlimm aussieht.

DieDolly 26. Nov 2019 20:54

AW: Besseres Random() - eure Vorschläge
 
Zitat:

Zitat von TurboMagic (Beitrag 1452113)
1. Ich bekomme bei beiden Links von dir 502 - Bad Gateway.

2. Die DEC hat auch einen Zufallszahlengenerator, aber frage mich
bitte nicht zu dessen Qualität. Du darfst aber gerne so eine
Verteilungskurve anfertigen, würde mich auch interessieren.

https://github.com/winkelsdorf/Delph...tionCompendium

Grüße

TurboMagic

Der DEC 6.0 beta 1 Random ist sehr langsam verglichen zu anderen. 10x langsamer bei mir. Die Resultate. Die Bilder sind in der Originalgröße, damit keine Details verloren gehen!
Info: ich musste die Bilder auf einen Discordserver hochladen, da meine favorisierte Seite img42.com nach dem Upload von 5x4 MB (5.242.880‬ Pixel) offline ging. 4MB pro Bild.

1024x1024 Durchgänge. Test-CPU: Intel Core i7 4790K

Random-DEC 6.0, 11539ms
https://cdn.discordapp.com/attachmen...64/unknown.png

Random-Delphi, 1057ms
https://cdn.discordapp.com/attachmen...68/unknown.png

Random-MT19937, 1063ms
https://cdn.discordapp.com/attachmen...37/unknown.png

Random-1-Zeiler, 1095ms
https://cdn.discordapp.com/attachmen...88/unknown.png

Random-Well1024, 1185ms
https://cdn.discordapp.com/attachmen...84/unknown.png

Random-Poisson
https://cdn.discordapp.com/attachmen...76/unknown.png

Random-DEC und Random-MT19937 schneiden am besten ab.
Well1024 ist durch die anfängliche Initialisierung mit dem Delphi-Random natürlich im Prinzip nur ein aufgemotztes "Standard-Random" mit denselben Auffälligkeiten.

TurboMagic 27. Nov 2019 21:17

AW: Besseres Random() - eure Vorschläge
 
Danke für die Grafiken. Wäre es möglich den Quellcode
des erzeugenden Programms zu bekommen?

DieDolly 27. Nov 2019 21:32

AW: Besseres Random() - eure Vorschläge
 
Ist tatsächlich nur das hier
Delphi-Quellcode:
procedure TForm1.RandomClick(Sender: TObject);
var
 x, y: Integer;
 bmp: TBitmap;
begin
 bmp := TBitmap.Create;
 try
  // 4 MB files
  bmp.Width := 1024;
  bmp.Height := 1024;

  for x := 0 to bmp.Width - 1 do
   begin
    for y := 0 to bmp.Height - 1 do
     begin
      bmp.Canvas.Pixels[x, y] := RandomLong; // Aufrufen was man braucht ..
     end;
   end;
 finally
  bmp.SaveToFile('Random-' + TButton(Sender).Caption + '.bmp');
  bmp.Free;
 end;
end;

Codehunter 28. Nov 2019 06:46

AW: Besseres Random() - eure Vorschläge
 
Zitat:

Zitat von DieDolly (Beitrag 1452239)
Random-DEC und Random-MT19937 schneiden am besten ab.
Well1024 ist durch die anfängliche Initialisierung mit dem Delphi-Random natürlich im Prinzip nur ein aufgemotztes "Standard-Random" mit denselben Auffälligkeiten.

Wie interpretiert man diese Grafik eigentlich? Ich wollte mir die mal genauer anschauen aber wie es scheint, ist irgendwo in der Kette zwischen deiner Delphi-Routine und dem Discord-Server eine JPEG-Konvertierung dazwischen gerutscht. Verlustbehaftete Komprimierung, damit wertlos geworden. Mir fehlt aber auch die Zeit, die verschiedenen Random-Algos zusammen zu suchen und ein eigenes Programm aufzusetzen.

EDIT: Wäre jedenfalls spannend, dieses Programm mitsamt aller nötigen externen Libs hier zur Verfügung zu stellen und auf verschiedenen Systemen zu testen. Wenn ich mich nicht irre, sind manche Algos von den CPUs und Mainboards abhängig.

Sherlock 28. Nov 2019 07:57

AW: Besseres Random() - eure Vorschläge
 
Zitat:

Zitat von Codehunter (Beitrag 1452330)
Wie interpretiert man diese Grafik eigentlich?

Es geht um die Gleichmäßigkeit des Rauschens. Je weniger Form darin zu erkennen ist, desto zufälliger soll der Algorithmus sein. Allerdings ist das ein recht subjektiver Test. Eine simple Balkengrafik hätte ich für besser auswertbar gehalten.

Sherlock


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:08 Uhr.
Seite 2 von 5     12 34     Letzte »    

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