![]() |
Re: Random ist kein reiner Zufall
Zitat:
Zitat:
|
Re: Random ist kein reiner Zufall
ja eigentlich meine ich das, aber da kommt bei mir immer 0 raus
|
Re: Random ist kein reiner Zufall
Also zunächst mal: Bei MUL EDX wird ja EAX mit EDX multipliziert. Das Ergebnis einer Multiplikation zweier 32Bit-Zahlen kann allerdings bis zu 64Bit beanspruchen. Deswegen wird das Ergebnis ins Registerpaar EDX:EAX geschrieben. Die 32 höherwertigen Bits stehen dabei in EDX.
Ursache dafür, dass das Result bei dir 0 ist, könnte sein: Der Parameter ist 1 :lol:, es ist Zufall (:wink:) oder du rufst Randomize nicht auf. Denn wenn Randomize nirgendwo im Programm aufgerufen wird, ist RandSeed ja beim ersten Random-Aufruf 0. Nach folgenden 3 Zeilen ist RandSeed dann 1:
Code:
Dann wird EDX (=1) mit EAX (=Parameter, Größe: 32Bit) multipliziert. Das Ergebnis ist also EAX. Da die 32 niedrigwertigen Bits des Ergebnisses in EAX geschrieben werden, bleibt EAX unverändert (=Parameter) und EDX wird genullt.
imul edx,[RandSeed],$0808804 // EDX := RandSeed(=0)*Konstante => EDX=0
inc edx // => EDX=1 mov [RandSeed],edx // => RandSeed = 1 Am Ende wird EDX (=0) dann in EAX kopiert und zurückgegeben. Deswegen ist die erste erzeugte Zufallszahl immer null, wenn Randomize nicht aufgerufen wurde. |
Re: Random ist kein reiner Zufall
gehts auch mit Randomize?
schliesslich muss Random(3) ja seinen wert haben |
Re: Random ist kein reiner Zufall
Zitat:
|
Re: Random ist kein reiner Zufall
Nachfolgend mal ein Beitrag aus google Groups
Das sollte dann wohl alle fragen beantworten. Zitat:
hier die Quelle ![]() Noch etwas in Delphi kann auf mod 2^32 verzichtet werden da Variablen einfach überlaufen. |
Re: Random ist kein reiner Zufall
der spricht da nirgendswo von mod 3 (oder meinst du mod3^32?)
|
Re: Random ist kein reiner Zufall
naja jedenfalls habe ich mit sachen wie Random := (n*Seed) div 2^32 { Wert aus {0,...,n-1} herrumgespielt doch habs immernoch nicht raus(wie gesagt: den neuen randseed kriege ich schon nur result nicht)
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:54 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz