Forum: Object-Pascal / Delphi-Language
Delphi
by Win32.API,
16. Mai 2009
Hallo gammatester,
danke für die ausführliche Erklärung! Ich hatte verdrengt, dass mul das Ergebnis in edx:eax speichert. Und somit immer mit den falschen 4byte gerechnet.
function MyRandom2(const ARange: Cardinal): Cardinal;
begin
result := Cardinal(RandSeed * $08088405 + 1) * Int64(ARange) shr 32;
RandSeed := result;
end;
Forum: Object-Pascal / Delphi-Language
Delphi
by Win32.API,
15. Mai 2009
Hi brechi,
Kann man es nicht einfach so umschreiben:
xor ebx,ebx
imul edx,,$08088405
Forum: Object-Pascal / Delphi-Language
Delphi
by Win32.API,
15. Mai 2009
Ja, das mit RandSeed ist mir bewust. Man kann es entweder auskommentieren, oder das Prigramm 2 mal starten (Ohne randomize()). Beides bringt aber nicht das erwartete Ergbenis.
Die Begründung das 0 er aus dem Speicher geladen werden müsste ist falsch, und ja es ist auch Heute noch schneller.