Delphi-PRAXiS
Seite 3 von 14     123 4513     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)

schrimm 31. Mär 2007 16:00

Re: Random ist kein reiner Zufall
 
also unser delphi lehrer hat das immer mit randomize gemacht, ka, was das dann macht, aber es scheint zufälliger zu werden.
aber wenn ich in einer schleife (lottozahlenzeugs) immer erst randomize und dann random gemacht habe, kam da immer die gleichen zahlen in einem durchgang hinaus, jedoch nach neustart des progs wieder andere, aber alle 6 gleich :roll:
Wie schon gesagt, es gibt ebend keinen wirklichen zufall

Dax 31. Mär 2007 16:01

Re: Random ist kein reiner Zufall
 
Zitat:

Zitat von inherited
Dann lügt das Delphi-Buch was ich hier stehen habe :mrgreen:

Was mich, ehrlich gesagt, wundern würde wie 'ne Schippe Sand in der Sahara..


Zitat:

Zitat von alzaimar
Der Borland-Generator ist schon nicht schlecht, richtig gut isser natürlich nicht, dafür gibt es dann besondere Algorithmen: Einer davon ist der Mersenne-Twister, ein ziemliches Ungetüm, das eine sehr sehr lange Periode hat: Die Zahlenreihe wiederholt sich erst nach einigen 10^xxxx Sequenzen. So genau weiss ich das aber nicht.

Ein Ungetüm sicherlich, dafür aber (in der richtigen Implementation, mein Versuch damals in C# war schneller als der .net-mitgebrachte Generator) recht fix[1] dank Verzicht auf arithmetische Operation und eine unschlagbare Periode ;)


[1] Siehe dazu http://www.math.sci.hiroshima-u.ac.j...FMT/index.html

3_of_8 31. Mär 2007 16:03

Re: Random ist kein reiner Zufall
 
Randomize initialisiert den Random-Seed mit irgendeinem Zeitwert, welcher genau weiß ich jetzt nicht. Ohne Randomize, kriegst du immer die gleichen Werte.

Zitat:

Zitat von HERMES
Man kann aber bessere "Zufallswerte" mit einem sog. WhiteNoise generator erzeugen, in wie weit diese Zufallszahlen echt sind ist mir nicht bekannt, allerdings benötigt man dafür spezielle Hardware.

Echt sind die garantiert nicht. Aber ein "echtes" weißes Rauschen hat tatsächlich eine Gleichverteilung aller Frequenzen.

dino 31. Mär 2007 16:11

Re: Random ist kein reiner Zufall
 
@Amateurprofi nun das ist auch ganz genau meine Meinung

manche glauben jedoch, dass es möglich wäre, dass ein teil auch mal in seinem leben regiert, wie er drch seine einflüsse hätte nciht regieren sollen

und da muss ich zugeben, dass kann man nciht ausschliessen, doch das ist genau das selbe wie gott: ausschliessen kann man nciht, dass es Zufall/Gott gibt, aber es beruhigt manche, daran zu glauben, also wieso nicht?

reden wir überhaupt noch davon, wie das random bei delphi realisiert wurde?

blablab 31. Mär 2007 16:26

Re: Random ist kein reiner Zufall
 
Ich versteh gar net was denn jetzt die frage ist...

Also random benutzt einfach eine zahl und rechnet mit Hilfe dieser zahl die nächste aus. Diese 2. Zahl sollte dann halt noch möglichst unterschiedlich von der 1. sein. So rechnet er dann eine Zahl nach der anderen aus.
Und mit Randomize setzt er für die zahl einfach gettickcount ein.
Das ist alles.

Ich weiß gar nicht, was da so geheimnisvoll sein soll???

Cöster 31. Mär 2007 16:34

Re: Random ist kein reiner Zufall
 
Zitat:

Zitat von dino
nur habe ich da keine ahnung von, wie man das im Programm einbaut, dass er guckt, was die einzelnen random aufrufe an Cpu verbrauchen

Nein, ich meinte das CPU-Fenster. Also nen Haltepunkt beim Randomaufruf reinsetzen, starten und, sobald der Haltepunkt erreicht ist, Strg+Alt+C. Dann ein paar mal F7 und man kann besser nachvollziehen, was passiert. Allerdings musst du dafür ein klitzekleines bisschen ASM können.


Zitat:

Zitat von dino
ist random ein besonderes Geheimniss von Delphi???

Wie kommst du darauf, der Code liegt offen.


Zitat:

Zitat von schrimm
also unser delphi lehrer hat das immer mit randomize gemacht, ka, was das dann macht, aber es scheint zufälliger zu werden.
aber wenn ich in einer schleife (lottozahlenzeugs) immer erst randomize und dann random gemacht habe, kam da immer die gleichen zahlen in einem durchgang hinaus, jedoch nach neustart des progs wieder andere, aber alle 6 gleich

Man soll Randomize ja auch nur einmal aufrufen, weil es den RandSeed wie gesagt entweder mit dem Var-Parameter von QPC oder dem TickCount initialisiert. Danach wird der RandSeed immer nur noch geändert, wenn Random aufgerufen wird. Wenn du Randomize in einer Schleife 6mal direkt hintereinander aufrufst, hat sich der TickCount in diesen Sekundenbruchteilen wohl kaum geändert. Der RandSeed wird immer wieder zurückgesetzt und du kriegst immer das gleiche raus.


Zitat:

Zitat von 3_of_8
Randomize initialisiert den Random-Seed mit irgendeinem Zeitwert, welcher genau weiß ich jetzt nicht

s.o.


Zitat:

Zitat von dino
reden wir überhaupt noch davon, wie das random bei delphi realisiert wurde?

Was sollen wir darüber reden, die Implementierung ist bekannt.
Die einzige Frage, die für mich noch unbeantwortet ist, ist die Herkunft der mysteriösen Konstante $08088405.

dino 31. Mär 2007 17:32

Re: Random ist kein reiner Zufall
 
oh nagut

also: wenn ihr wisst, wie random gemacht ist, könnt ihr mir dann sagen, warum das so ist?(was ich am anfang des threads feststellen musste)


also ich belibe dabei, dass niemand sagen kann, dass es zufall nciht gibt genausowenig, wie jemand sagen kann, dass es zufall gibt, denn dafür müsste man die Welt und ihre zusammenhänge 100%ig verschlüselt wissen und das ist, wie wir wissen ganz und garnicht so

@unwissender

etwas nciht berechnen zu können heisst nicht, dass es zufall ist!!!
die unschärferelation ist eine vereinfachung, die nötig ist, da man (hoffentlich vertue ich mich da nciht) etwas[weiss nciht mehr was] physisch unmöglich genau bestimmen kann, da jedes verfahren zum erkennen, wie das Ergebnis ausfällt das Ergebnis beeinflussen würde

ich glaube es handelte sich dabei um ort und energie(wellenenergie?schwingungsenergie?rotations energie?) eines elektrons, welche man nciht bestimmen kann, weil halt jedes verfahren, welches auf diese Eigenschaften eines Elektrons reagiert das Elektron ebenfalls auf die Messung reagieren lässt

und übrigens habe ich bereits erwähnt, dass in der Welt alles mit allem zusammenhängt und deshalb lässt es sich nciht berechnen

jedes einzelne helium atom in der Sonne, welches sich mal nach links oder rechts bewegt hat auswirckung auf das Ergebnis

unschärferelation heisst also meiner meinung nach nciht, dass es ungenau ist, sondern dass wir es nciht genau erfahren können
in dem sinne unberechenbar aber nciht zufällig

Sunlight7 31. Mär 2007 18:23

Re: Random ist kein reiner Zufall
 
Abend allerseits!

Zitat:

Zitat von dino
sun und ich haben entdeckt, dass die delphi zufallsfunktion etwas nicht zufälliges hat:

Da muß ich mich auch zu Wort melden. :mrgreen:

Also um das etwas zu verdeutlichen, wir haben ein Random, das 3 Zustände ausgeben kann (0, 1, 2)... :angel2:
Dann zählen wir in einer Schleife mit, welcher Zustand wie oft dran kommt. :stupid:
Sobald alle Zustände gleich oft erzeugt wurden wird die Schleife abgebrochen.

Das Interessante dabei ist, das die Schleife entweder sofort wieder abgebrochen wird, weil alle Zustände nur nach wenigen Durchläufe gleich auf sind, oder es läuft zu ner Zahl, die ca. zwischen 1411655764 und 1431655764 liegt... :shock:

Nur einmal kam ein EIntOverflow :stupid: , das war wohl nur zufällig :lol:

Und so kommt die Frage auf, wie kommt das zustande? :gruebel:

Grüßle!

PS: Zum ansehen das ganze als Quelltext:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
   var i0, i1, i2:integer;
begin
  Randomize;

  i0:=0;
  i1:=0;
  i2:=0;

  Repeat
    Case Random(3) of
       0: Inc(i0);
       1: Inc(i1);
       2: Inc(i2);
    end;
  until (i0=i1) and (i0=i2) and (i1=i2);

  Beep;
  Edit1.text:=IntToStr(i0)+' - '+IntToStr(i1)+' - '+IntToStr(i2);
end;

dino 31. Mär 2007 18:27

Re: Random ist kein reiner Zufall
 
schön ausgedrückt sun

hier mal der Quelltext aus meinem 2. Programm, welches das selbe tut wie das 1. nur immer wieder

Delphi-Quellcode:
var
  i:integer;

{$R *.DFM}

procedure rechne;
   var i0, i1, i2:integer;
begin
  Randomize;
  i0:=0;
  i1:=0;
  i2:=0;
  form1.Button1.caption:='Stop';

  Repeat
    Case Random(3) of
       0: Inc(i0);
       1: Inc(i1);
       2: Inc(i2);
    end;
  until (i0=i1) and (i0=i2) and (i1=i2);

  Beep;
  inc(i);
  form1.image1.canvas.pixels[i,form1.image1.height-round(2*sqrt(sqrt(i0)))]:=clred;
  form1.edit1.text:=form1.edit1.text + inttostr(i0)+' - ';

  form1.timer1.enabled:=true;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  if button1.caption='Stop' then
  begin
    button1.caption:='Start';
    timer1.enabled:=false;
  end else rechne;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  timer1.enabled:=false;
  rechne;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  i:=0;
end;

end.
ach übringens: hat jemand die exe ausprobiert? was habt ihr so raus?

Luckie 31. Mär 2007 18:37

Re: Random ist kein reiner Zufall
 
Zitat:

Zitat von schrimm
aber wenn ich in einer schleife (lottozahlenzeugs) immer erst randomize und dann random gemacht habe, kam da immer die gleichen zahlen in einem durchgang hinaus, jedoch nach neustart des progs wieder andere, aber alle 6 gleich :roll:
Wie schon gesagt, es gibt ebend keinen wirklichen zufall

Logisch weil der Zufallsgenerator immer mit dem gleichen Wert initialisisert wurde. Randomize darf nur einmal beim Programmstart aufgerufen werden.


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:25 Uhr.
Seite 3 von 14     123 4513     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