Thema: Delphi Zufallszahl ermiteln

Einzelnen Beitrag anzeigen

eroe

Registriert seit: 15. Mai 2004
Ort: Brandenburg
31 Beiträge
 
#16

Re: Zufallszahl ermiteln

  Alt 17. Mai 2004, 17:27
Delphi-Quellcode:
procedure _RandInt;
asm
{     ->EAX     Range   }
{     <-EAX     Result  }
        PUSH EBX
{$IFDEF PIC}
        PUSH EAX
        CALL GetGOT
        MOV EBX,EAX
        POP EAX
        MOV ECX,[EBX].OFFSET RandSeed
        IMUL EDX,[ECX],08088405H
        INC EDX
        MOV [ECX],EDX
{$ELSE}
        XOR EBX, EBX
        IMUL EDX,[EBX].RandSeed,08088405H
        INC EDX
        MOV [EBX].RandSeed,EDX
{$ENDIF}
        MUL EDX
        MOV EAX,EDX
        POP EBX
end;

procedure _RandExt;
const two2neg32: double = ((1.0/$10000) / $10000); // 2^-32
asm
{       FUNCTION _RandExt: Extended;    }

        PUSH EBX
{$IFDEF PIC}
        CALL GetGOT
        MOV EBX,EAX
        MOV ECX,[EBX].OFFSET RandSeed
        IMUL EDX,[ECX],08088405H
        INC EDX
        MOV [ECX],EDX
{$ELSE}
        XOR EBX, EBX
        IMUL EDX,[EBX].RandSeed,08088405H
        INC EDX
        MOV [EBX].RandSeed,EDX
{$ENDIF}

        FLD [EBX].two2neg32
        PUSH 0
        PUSH EDX
        FILD qword ptr [ESP]
        ADD ESP,8
        FMULP ST(1), ST(0)
        POP EBX
end;

ACH KLAR !! jetz wo dus sagst
aber danke schonmal für die erläuterung, hätt ich nich gedacht ..

@ Sharky .. naja, das sie nich 100 % zufall sind war relativ klar, aber ich hätt nich erwartet das sie von so nem unsicheren faktor wie systemzeit abhängen, zumindest nimmer heutzutage ..
"Der ganze Rummel um die Emanzipation hat nichts daran geändert, dass Frauen sich hübsch machen um Männern zu gefallen"
  Mit Zitat antworten Zitat