AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Random: Delphi vs. Lazarus?

Ein Thema von AlexII · begonnen am 30. Jan 2014 · letzter Beitrag vom 7. Feb 2014
Antwort Antwort
Seite 2 von 4     12 34      
Gutelo

Registriert seit: 29. Sep 2013
152 Beiträge
 
#11

AW: Random: Delphi vs. Lazarus?

  Alt 31. Jan 2014, 00:35
Zwar abenteuerlich, aber liefert wenigstens halbwegs zufallsaehnliche Zahlen waehrend Random mit Randomize immer identische Abfolgen generiert...
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#12

AW: Random: Delphi vs. Lazarus?

  Alt 31. Jan 2014, 00:46
Bist du sicher, dass du Randomize auch nur einmalig aufgerufen hast? Ich hatte solche Probleme nur, wenn ich es versehentlich mehrfach aufgerufen hatte oder ganz vergessen hatte.

Deine Implementierung hat dagegen einige Probleme: Das erste if ist meiner Meinung nach komplett sinnlos, da num nach der vorherigen Zeile nie kleiner als 1 sein kann – da stellt man sich beim Lesen erst mal die Frage, ob Autor des Codes überhaupt weiß, was er tut – das sorgt nicht gerade für Vertrauen. Und das Zweite if ist noch schlimmer, denn es sorgt dafür, dass n statistisch häufiger vorkommt als alle anderen Werte.
  Mit Zitat antworten Zitat
Benutzerbild von BUG
BUG

Registriert seit: 4. Dez 2003
Ort: Cottbus
2.094 Beiträge
 
#13

AW: Random: Delphi vs. Lazarus?

  Alt 31. Jan 2014, 00:56
Dann doch lieber selber einen der besseren Generator implementieren oder die Windows CryptAPI benutzen.
Du hast afaik keine Garantien, das die GUID in Zukunft (spätere Windowsversionen) auch noch "zufällig" genug ist. Aber interessante Idee
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#14

AW: Random: Delphi vs. Lazarus?

  Alt 31. Jan 2014, 00:58
Windows CryptAPI
Wobei nach den letzten Monaten wohl keiner mehr ernsthaft glaubt, dass das Ding keine Backdoor hat, oder?
  Mit Zitat antworten Zitat
Gutelo

Registriert seit: 29. Sep 2013
152 Beiträge
 
#15

AW: Random: Delphi vs. Lazarus?

  Alt 31. Jan 2014, 01:05
Dass das erste if keinen Sinn macht gebe ich dir Recht. Ist ein Relikt einer vorherigen Implementation in der das 1+ nicht im Trunc war. Aendert aber nichts an der Funktionalitaet.

Bezueglich des zweiten ifs: Auch dieser Einwand ist richtig. Allerdings ist der Einfluss sehr gering und die resultierenden statitischen Verteilungen sind vielfach besser als bei Random. Wenn jemand eine Idee hat wie man die Randbedingung ohne Grossen Aufwand besser loest waere ich dankbar.

Randomize hatte ich nur einmal vorher aufgerufen. Sehe aber auch keinen Grund warum man es nicht oefter aufrufen duerfte. Nach meinem Verstaendnis setzt Randomize nur einen beliebigen Startpunkt fest von dem aus die weiteren Werte mit Random bestimmt werden. Da der Startpunkt zufaellig ist sollte man Randomize doch auch beliebig aufrufen duerfen, oder nicht?
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#16

AW: Random: Delphi vs. Lazarus?

  Alt 31. Jan 2014, 01:19
Der Startpunkt ist nicht zufällig – wie auch. Man braucht ja gerade den Zufallsgenerator, um „zufällige“ Werte zu erzeugen. Wie soll man dann einen echt zufälligen Startpunkt für den Zufallsgenerator finden? Ein Computer ist nun mal deterministisch.

Randomize setzt den Startpunkt auf die aktuelle Uptime. Wenn man das in kurzen Abständen hintereinander ausführt, kommen da immer der gleiche oder sehr ähnliche Seeds bei heraus, und dadurch ergeben sich auch immer gleiche oder ähnliche Zahlenfolgen.
  Mit Zitat antworten Zitat
Benutzerbild von cookie22
cookie22

Registriert seit: 28. Jun 2006
Ort: Düsseldorf
936 Beiträge
 
Delphi XE2 Professional
 
#17

AW: Random: Delphi vs. Lazarus?

  Alt 31. Jan 2014, 11:04
Wenn man das in kurzen Abständen hintereinander ausführt, kommen da immer der gleiche oder sehr ähnliche Seeds bei heraus, und dadurch ergeben sich auch immer gleiche oder ähnliche Zahlenfolgen.
Ähnliche Seeds ergeben nicht ähnliche Zufallszahlen. Ausserdem kann man den Delphi RNG auch selbst via RandSeed füttern.
Gruß
Cookie
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#18

AW: Random: Delphi vs. Lazarus?

  Alt 31. Jan 2014, 11:08
Wenn man das in kurzen Abständen hintereinander ausführt, kommen da immer der gleiche oder sehr ähnliche Seeds bei heraus, und dadurch ergeben sich auch immer gleiche oder ähnliche Zahlenfolgen.
Ähnliche Seeds ergeben nicht ähnliche Zufallszahlen.
Ich hab nicht im Kopf wie der RNG von Delphi genau funktioniert, ich hab nur irgendwann mal die Erfahrung gemacht. Vielleicht lief der Code auch so schnell, dass die Seeds tatsächlich häufig komplett gleich waren.
  Mit Zitat antworten Zitat
Benutzerbild von cookie22
cookie22

Registriert seit: 28. Jun 2006
Ort: Düsseldorf
936 Beiträge
 
Delphi XE2 Professional
 
#19

AW: Random: Delphi vs. Lazarus?

  Alt 31. Jan 2014, 11:30
Wenn man das in kurzen Abständen hintereinander ausführt, kommen da immer der gleiche oder sehr ähnliche Seeds bei heraus, und dadurch ergeben sich auch immer gleiche oder ähnliche Zahlenfolgen.
Ähnliche Seeds ergeben nicht ähnliche Zufallszahlen.
Ich hab nicht im Kopf wie der RNG von Delphi genau funktioniert, ich hab nur irgendwann mal die Erfahrung gemacht. Vielleicht lief der Code auch so schnell, dass die Seeds tatsächlich häufig komplett gleich waren.
Darum sollte man ja Randomize nicht zu schnell zu oft aufrufen.
Gruß
Cookie
  Mit Zitat antworten Zitat
gammatester

Registriert seit: 6. Dez 2005
999 Beiträge
 
#20

AW: Random: Delphi vs. Lazarus?

  Alt 31. Jan 2014, 11:33
Noch mal zum Thema Geschwindigkeit vs. Sicherheit bzw Periodenlänge: So einfach wie hier zusammengefaßt
Delphi - linearer Kongruenzgeneratoren - 2^32 = schnell, aber nicht sehr sicher.
Lazarus - Mersenne-Twister Pseudozufallszahlengenerator - (2^19937)−1 = langsam, aber dafür viel sicherer?
ist die Lage nicht. Wenn man sich meine Tabelle http://www.wolfgang-ehrhardt.de/misc_de.html#prng ansieht, erkennt man das Delphi random nur ca 10% schneller als der Mersenne Twister ist, aber 30% langsamer als X0R4096 und immer noch 15% langsamer als mein 'Standard'-Generator Taus88. Selbst der kryptografische ISAAC-Generator ist nur ca 18% langsamer.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 4     12 34      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:36 Uhr.
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