Delphi-PRAXiS
Seite 11 von 14   « Erste     91011 1213     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Random ist kein reiner Zufall (https://www.delphipraxis.net/89462-random-ist-kein-reiner-zufall.html)

alzaimar 2. Apr 2007 16:57

Re: Random ist kein reiner Zufall
 
Wieso soll denn das 'zufälliger' sein? :gruebel: Hast Du das getestet? Und wenn ja, wie?

dino 2. Apr 2007 20:15

Re: Random ist kein reiner Zufall
 
nun versuch ichs mal damit:
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;
1. Frage: ich weiss nun, dass Push den wert im stack abspeichert.
überschreibt push eax nun push ebx oder gibts für beide register nen einzelnen stack?
2. Frage: "call getgot" ich weiss was call ist, aber was ist getgot?
3. Frage: [EBX].Randseed: was ist das? hat der register Ebx noch unterregister oder wie?

Cöster 2. Apr 2007 21:19

Re: Random ist kein reiner Zufall
 
Oh Mann, das erste OT-Thema ist beendet und gleich fängt das nächste an. Aber nun gut.

Zitat:

Zitat von dino
überschreibt push eax nun push ebx oder gibts für beide register nen einzelnen stack?

Nein, alles kommt in einen Stack. Das Funktionsprinzip eines Stacks kannst du in der Wikipedia nachlesen.

Zitat:

Zitat von dino
was ist getgot?

Irgendne Funktion. Was sie macht? kp

Du musst bedenken, dass entweder der Code zwischen
Delphi-Quellcode:
{$IFDEF PIC}
und
Delphi-Quellcode:
{$ELSE}
oder der zwischen
Delphi-Quellcode:
{$ELSE}
und
Delphi-Quellcode:
{$ENDIF}
durchgeführt wird, abhängig davon, ob "PIC" (was auch immer das heißt) definiert ist. Auf meinem PC ist PIC jedenfalls nicht definiert.

Zitat:

Zitat von dino
[EBX].Randseed: was ist das?

Wie das genau syntaktisch funktioniert, weiß ich nicht. Ist aber (in diesem Fall, weil EBX=0) gleichbedeutend mit Randseed.

himitsu 2. Apr 2007 22:32

Re: Random ist kein reiner Zufall
 
Zitat:

Zitat von alzaimar
Wieso soll denn das 'zufälliger' sein? :gruebel: Hast Du das getestet? Und wenn ja, wie?

Wie negaH schon mehrmals sagte/bewieß, gibt es in einem "normalem" PC keinen echten Zufall.

Bei dem pseudo Zufallsgeneratoren wie der in Delphi, welche nur rein mathematisch arbeiten
gibt es immer eine ganz bestimmte Zahlenfolge, welche erstellt wird und Randomize setzt nur den Anfang innerhalb dieses Zahlenspektrums.

Nun wird durch den Einsatz einer programmunabhängigen Variable (z.B. der Zeit) von diesem kontinuierlichem Zahlenstrom ständig "unvorhersehbar" abgewichen.

Theoretisch wäre es ja möglich mit einer ausreichenden Anzahl aufeinanderfolgender Werte die Nachfolgenden zu berechnen (vorallem wenn man schon den Algotirhmus kennt).

Ich hab bei "meinem" Code auch extra nur ein Bit der Formel verändert, da diese schon eine schöne Verteilung der "Zufallszahlen" bietet und ich dieses nicht zerstören wollte.



Wenn man viele Zufallszahlen in kürzester Zeit (< 10 ms) berechnen möchte, dann sollte man allerdings etwas schnelleres als GetTickCount verwenden.

Hab GetTickCount nur verwendet, da dieses leicht/schnell auslesbar und vorallem in einer schönen Größe (32 Bit) ist.

grenzgaenger 2. Apr 2007 22:53

Re: Random ist kein reiner Zufall
 
du weisst aber schon, dass 'n zufallszahlengenerator, überhaupt nix wert ist, wenn man den zufall nicht reproduzieren kann????!!!

dino 2. Apr 2007 22:55

Re: Random ist kein reiner Zufall
 
nun denke ich, dass genau das genau das Thema ist, worums hier geht

ich will ja verstehen, woher meine Ergebnisse kommen und dafür möchte ich verstehen, wie Random programmiert ist


Zitat:

Zitat von Cöster
Du musst bedenken, dass entweder der Code zwischen
Delphi-Quellcode:
{$IFDEF PIC}
und
Delphi-Quellcode:
{$ELSE}
oder der zwischen
Delphi-Quellcode:
{$ELSE}
und
Delphi-Quellcode:
{$ENDIF}
durchgeführt wird, abhängig davon, ob "PIC" (was auch immer das heißt) definiert ist. Auf meinem PC ist PIC jedenfalls nicht definiert.

ich kenne ja nun ein wenig asm code, daher frage ich mcih wohl zurecht, wie sowas zustande kommen soll, wo das mit dem PIC bzw. elde und endif doch in {} steht

himitsu 2. Apr 2007 23:22

Re: Random ist kein reiner Zufall
 
Zitat:

Zitat von grenzgaenger
du weisst aber schon, dass 'n zufallszahlengenerator, überhaupt nix wert ist, wenn man den zufall nicht reproduzieren kann????!!!

Echter Zufall ist aber nicht reproduzierbar.

Wieso sollte also in "Zufallsgernerator", der genau das macht, nichts wert sein?

Schließlich nimmt man ja einen "Zufallsgerneraor", damit man nicht reproduzierbare/zufällige Werte bekommt.


[add]
@dino
Zitat:

Zitat von OH
Kommentare und Compiler-Direktiven

Kommentare werden vom Compiler ignoriert. Dies gilt jedoch nicht für Kommentare, die als Trennzeichen (zur Trennung aufeinanderfolgender Token) oder als Compiler-Direktiven fungieren.

Kommentare lassen sich auf verschiedene Arten kennzeichnen:
Code:
{ Text zwischen einer öffnenden und einer schließenden geschweiften Klammer. }
(* Text zwischen einer öffnenden runden Klammer plus einem Sternchen und
   einem Sternchen plus einer schließenden runden Klammer. *)
// Beliebiger Text zwischen einem doppelten Schrägstrich und dem Zeilenende.
Ähnliche Kommentare lassen sich nicht verschachteln. So funktioniert beispielsweise {{}}, der Kommentar (*{}*) jedoch nicht. Dies ist nützlich zum Auskommentieren von Abschnitten, die ebenfalls Kommentare enthalten.

Ein Kommentar, in dem unmittelbar nach { oder (* ein Dollarzeichen ($) steht, ist eine Compiler-Direktive. Beispiel:
Code:
{$WARNINGS OFF}
Diese Direktive weist den Compiler an, keine Warnmeldungen zu generieren.


dino 2. Apr 2007 23:40

Re: Random ist kein reiner Zufall
 
oh sehr interessant danke himitsu, das wusste ich nicht

bleibt nurnoch die Frage, was IFDEF PIC heisst

himitsu 3. Apr 2007 00:55

Re: Random ist kein reiner Zufall
 
:shock: wollt grad auf $IFDEF in der OH verweisen, aber meine D4/D7-Hilfe kennt dat nicht ... zum Glück hab'sch nochmal nachgesehn :stupid:

{$IFDEF PIC} prüft einfach ob das Symbol PIC vorher definiert wurde ... z.B. per {$DEFINE PIC}, welches in [oh]$DEFINE[/oh] beschrieben wird.


PS: der Text da Oben ist unter [oh]$[/oh] zu finden :angel:

dino 3. Apr 2007 16:32

Re: Random ist kein reiner Zufall
 
öhm ob PIC vorher Definiert wurde...

Im Programm oder wo?
oder wer oder was Definiert sowas?


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:28 Uhr.
Seite 11 von 14   « Erste     91011 1213     Letzte »    

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz