Irgendwelche erkennbare Muster in den Bildern deuten daraufhin, dass der Pseudo-Zufallsgenerator eher P als Z ist
. Umgekehrt bedeuten Bilder ohne erkennbare Muster nicht unbedingt, dass der Generator gut ist.
Man muss die Bilder unkomprimiert betrachten. Aber auch unkomprimiert ergeben sich bei Dollys "Experiment" Muster beim Delpi Generator.
Auf HD Monitoren (oder schlechter und generell) sollte man beachten, dass die Bilder "in Originalgrösse" betrachtet werden. Werden die Bilder vom Anzeigeprogramm skaliert entstehen Muster, welche im Originalbild nicht vorhanden sind.
Für Tests mit dem Delphi Generator empfehle ich dir einen Initialwert randseed := ... zu setzen, dann werden - wenn andere experimentieren - die gleichen Zahlenfolgen erzeugt.
Wenn man den in
asm geschriebenen Delphigenerator (Delphi 10.3.3) betrachtet, dann ist es nicht erstaunlich, dass die erzeugten Zahlen weit weg von "echtem Zufall" sind (hier
asm Code in Delphi umgesetzt):
Delphi-Quellcode:
function ra( arange : integer ): integer;
(*
PUSH EAX
IMUL EAX,RandSeed,08088405H
INC EAX
MOV RandSeed,EAX
POP EDX
MUL EDX
MOV EAX,EDX
*)
var eax, edx : cardinal;
edxeax : Uint64;
begin
eax := randseed * 134775813; // 3*17*131*20173
inc( eax );
randseed := eax;
edxeax := arange*eax;
edx := edxeax shr 32;
Result := edx;
end;
Du erreichst u.U. eine bessere Verteilung, wenn du den Generator statt einmal eine grosse Zahl drei mal Zahlen in einem kleineren Intervall erzeugen lässt, zum Beispiel im Intervall [0,256[ (dabei spielt die Rechengenauigkeit des Generators eine wesentliche Rolle):
Delphi-Quellcode:
hb := TBitMap.Create;
try
hb.SetSize( 1024,1024 );
hb.PixelFormat := pf32bit;
for x := 0
to hb.Width-1
do
for y := 0
to hb.Height-1
do
begin
hb.Canvas.Pixels[x,y] :=
RGB(random(256),random(256),random(256));
// statt random( $1000000 );
end;
hb.SaveToFile( '
C:\Users\micha\Desktop\bm2.bmp' );
finally
hb.Free;
end;
Wenn du die Qualität eines P Zufallgenerators testen willst, reichen diese Bilder natürlich nicht.