![]() |
Re: Zufallszahl ermiteln
FormCreate--> ranodmize;
Aktionsaufruf-->random(maxwert) |
Re: Zufallszahl ermiteln
Zitat:
PS: soll keine anzweiflung deiner these sein, mich wunderts nur ein wenig ;) |
Re: Zufallszahl ermiteln
Zitat:
Und JA: ECHTE Zufallszahlen werden mit Delphi (kann das über haupt ein normaler PC?) nicht erzeugt. |
Re: Zufallszahl ermiteln
Zitat:
Delphi-Quellcode:
...:cat:...
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; |
Re: Zufallszahl ermiteln
Zitat:
Delphi-Quellcode:
...:cat:...
procedure Randomize;
{$IFDEF LINUX} begin RandSeed := _time(nil); end; {$ENDIF} {$IFDEF MSWINDOWS} var Counter: Int64; begin if QueryPerformanceCounter(Counter) then RandSeed := Counter else RandSeed := GetTickCount; end; {$ENDIF} |
Re: Zufallszahl ermiteln
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 ;) :D 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 .. |
Re: Zufallszahl ermiteln
Zitat:
aber ein normaler pc, der in irgendeiner weise mit einer stereoanlage oder einer soundkarte verbunden ist, mit dem kann man echte zufallszahlen aus dem rauschen der (sound-) chips machen/berechnen. Line out mit Line in verbinden, rauschen der eigenen soundkarte oder stereoanlage aufnehmen und die frequenzen des rauschens als grundlage für die berechnung einer zufallszahl nehmen. d.h. würde das randomize() von delphi nicht mit der systemzeit sondern mit irgendeinem rauschen von einem soundchip initialisiert, wären die zufallszahlen um einiges zufälliger... mfg |
Re: Zufallszahl ermiteln
Zitat:
Gruß Hagen |
Re: Zufallszahl ermiteln
Übrigens, warte mal Donnerstag ab, dem Männertag, dann kennst du den Unterschied zwischen Blau und Pseudo-Blau :cheers: ;)
Gruß Hagen |
Re: Zufallszahl ermiteln
kannst auch einfach die unit MATH einbinden und dann randomrange(0,100) machen :)
so long, Powerstreamer |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:15 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