Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Fr Jul 18, 2025 00:41

Foren-Übersicht » Programmierung » Allgemein
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 13 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: ist random wirklich random???
BeitragVerfasst: Fr Dez 17, 2004 20:24 
Offline
DGL Member
Benutzeravatar

Registriert: Di Dez 02, 2003 12:47
Beiträge: 300
Wohnort: Marburg
Ich benutze in meinem TestProgramm (Hier zum Download http://www.delphigl.com/forum/viewtopic.php?t=3539)

die random funktion, um die 20 Objekte zu plazieren, auszurichten und zur Fargebung.

Nun ist das nicht schlimm, aber ich habe jedesmal, wenn ich das Programm starte, die selben Objekte an der selben Stelle, in der Selben Lage u.s.w.

Bin ich zu Blöd, oder beginnt die Funktion bei jedem Programmstart mit den selben "Zufallszahlen" ???

Code:
  1.   for i := 1 to 20 do begin
  2.     Gra.NewObect(inttostr(i),'1',GeoSVec((random-1/2)*20,(random-1/2)*20,(random-1/2)*20),
  3.                  GeoSVec(random*360,random*360,random*360),1,GeoSVec(Random,Random,random),true);
  4.   end;

_________________
Nothing, oh sweet nothing,
today we are doing nothing at all...
http://www.geo-progs.de


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Dez 17, 2004 20:38 
Offline
DGL Member

Registriert: Do Mai 30, 2002 18:48
Beiträge: 1617
ja, er erzeugt immer die selben zufallszahlen,w enn du nicht vor der benutzung von randum einmal randomize aufrufst - steht aber alles in der hilfe zu random, jedenfalls war das früher immer so ;-)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Dez 17, 2004 20:41 
Offline
DGL Member
Benutzeravatar

Registriert: Di Dez 02, 2003 12:47
Beiträge: 300
Wohnort: Marburg
Äh, ja.

Ich hatte die Hilfe gelesen, nur halt zu schnell. Ich lese halt wie ich schreibe :-)

_________________
Nothing, oh sweet nothing,
today we are doing nothing at all...
http://www.geo-progs.de


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Dez 18, 2004 12:11 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Randomize unbedingt im OnCreate aufrufen, wenn Randomize zu schnell nacheinander aufgerufen wird, kommen meist trotzdem die selben Zahlen.

_________________
Blog: kevin-fleischer.de und fbaingermany.com


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Dez 18, 2004 16:35 
Offline
DGL Member

Registriert: Mo Apr 05, 2004 19:51
Beiträge: 105
Wie sich unser Informatik-Professor einmal ausgedrückt hatte: "Wer meint, mit einer deterministischen Maschine echte Zufallszahlen erzeugen zu können, muss am Rande des Wahnsinns sein." ;)

Also, kurz und knapp: Nein, random ist nicht wirklich zufällig und kein Algorithmus dieser Welt kann echte Zufallszahlen liefern (das ist theoretisch unmöglich, da ein Algorithmus per Definition deterministisch ist). Dein Problem ist aber mit Randomize zu lösen, dann kommen jedesmal andere Zahlen raus, weil der Algorithmus mit der Systemzeit initialisiert wird, die ja bei keinem Start des Programms exakt gleich sein wird. Das ist aber auch die einzige "echte" Zufallskomponente daran.
Für Spiele langt's allerdings, für "ernsthafte" Anwendungen (Kryptographie) braucht man echte Zufallszahlen aus anderen Quellen.


Zuletzt geändert von Arno am Sa Dez 18, 2004 20:36, insgesamt 1-mal geändert.

Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Dez 18, 2004 17:02 
Offline
Forenkatze
Benutzeravatar

Registriert: Mi Okt 22, 2003 18:30
Beiträge: 1945
Wohnort: Närnberch
Programmiersprache: Scala, Java, C*
random generiert Zufallszahlen auf der Basis eines Seeds, der vorher mit randomize neu ausgewürfelt wurde.
Wenn man nicht bei jedem Programmstart randomize aufruft, bekommt man immer die gleichen Zufallszahlen.

Allerdings fällt auf, wenn man randomize zu oft hintereinander aufruft (es hängt wirklich davon ab, wie oft in welcher Zeitspanne) lassen sich Muster in den Zufallszahlen erkennen. Es sind nicht die gleichen, aber sie ähneln vorherigen Zufallszahlen in einigem Abstand.

Dies liegt darin begründet, dass Randomize die AKTUELLE ZEIT in leicht veränderter Form als Seed benutzt.

Wer will, kann sich ja mal die randomize Prozedur in der System.pas anschauen.
Obwohl dort Assembler benutzt wird, erkennt man ganz gut, wie die aktuelle Systemzeit als Zufallszahl herangezogen wird.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Dez 18, 2004 18:03 
Offline
DGL Member
Benutzeravatar

Registriert: Di Jul 01, 2003 18:59
Beiträge: 887
Wohnort: (The Netherlands)
Programmiersprache: fpc/delphi/java/c#
Random must be initialized i believe the fuction needed is called randomize. If you do not call that one it gives the same values as that makes good for testing.

_________________
http://3das.noeska.com - create adventure games without programming


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Dez 19, 2004 22:01 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Dez 13, 2002 12:18
Beiträge: 1063
Zitat:
Wer meint, mit einer deterministischen Maschine echte Zufallszahlen erzeugen zu können, muss am Rande des Wahnsinns sein

Wobei es auch Prozessoren gibt, die aufgrund des "chaotischen" Zustandes der Wärmeverteilung innerhalb des Siliziums nicht wiederholbare Reihen von Zufallszahlen erzeugen können. Sozusagen eine praktische Anwendung von Entropie und Chaosforschung :wink: .
http://www.zdnet.de/news/hardware/0,39023109,2129129,00.htm
Selbstverständlich kann man auch den Faktor "Mensch" verwenden, wenn man z.B. immer wieder mal die Zeit zwischen zwei aufeinanderfolgenden Tastendrücken (mit High Performance Counter gemessen) als Seed einer Reihe von Zufallszahlen hernimmt.

_________________
Viel Spaß beim Programmieren,
Mars
http://www.basegraph.com/


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Dez 21, 2004 17:33 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Ok..hat zwar nicht primär mit der Obigen Frage zu tun aber hier noch paar Seed-Ideen:

SystemZeit Verbunden mit MausPosition
Rauschen von diversen Anschlüssen (Netzwerkkabel) in Verbindung mit Systemzeit

_________________
Blog: kevin-fleischer.de und fbaingermany.com


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Dez 21, 2004 18:45 
Offline
Forenkatze
Benutzeravatar

Registriert: Mi Okt 22, 2003 18:30
Beiträge: 1945
Wohnort: Närnberch
Programmiersprache: Scala, Java, C*
Flash hat geschrieben:
Rauschen von diversen Anschlüssen (Netzwerkkabel) in Verbindung mit Systemzeit

Und wie willst du das Rauschen kriegen???

_________________
"Für kein Tier wird so viel gearbeitet wie für die Katz'."


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Dez 21, 2004 20:45 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Muss man halt nen Antitreiber basteln ;)

Hab ja net gesagt, dass das einfach oder von jetzt auf gleich umzusetzen wäre. Sondern eher ne theoretische Überlegung.

_________________
Blog: kevin-fleischer.de und fbaingermany.com


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Jan 03, 2005 12:48 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Mai 14, 2004 18:56
Beiträge: 804
Wohnort: GER/OBB/TÖL-WOR/Greiling
kann man eigentlich aus einer gegebenen zufallszahl die systemzeit beim randomize-aufruf zurückberechnen?

_________________
Bild

"User Error. Replace User and hit Continue."


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Jan 03, 2005 19:16 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Nur theoretisch. Du musst auch wissen welche (die wievielte) Zahl das ist, die mit der entsprechenden Seed erzeugt wurde.

_________________
Blog: kevin-fleischer.de und fbaingermany.com


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 13 Beiträge ] 
Foren-Übersicht » Programmierung » Allgemein


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 5 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.009s | 14 Queries | GZIP : On ]