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 1 von 4  1 23     Letzte »    
AlexII

Registriert seit: 28. Apr 2008
1.717 Beiträge
 
FreePascal / Lazarus
 
#1

Random: Delphi vs. Lazarus?

  Alt 30. Jan 2014, 14:09
Kennt jemand die Unterschiede?
Folgendes habe ich zu der Funktion bei Lazarus gefunden:
Zitat:
The Free Pascal implementation of the Random routine uses the Mersenne Twister to simulate
randomness. This implementation has a better statistical distribution than for example a Linear Congruential
generator algorithm, but is considerably slower than the latter. If speed is an issue, then
alternate random number generators should be considered.
Wie steht es mit dem in Delphi?
Bin Hobbyprogrammierer! Meine Fragen beziehen sich meistens auf Lazarus!
  Mit Zitat antworten Zitat
hathor
(Gast)

n/a Beiträge
 
#2

AW: Random: Delphi vs. Lazarus?

  Alt 30. Jan 2014, 14:25
DELPHI2009

DELPHI RANDOM

// Quellcode entfernt - seid bitte so gut und veröffentlicht keinen Quellcode aus dem Produkt. Die Sourcen liegen nicht jeder Edition bei und daher dürfen wir sie hier auch nicht - nicht einmal auszugsweise - veröffentlichen. Sorry, ist aber so und ich möchte mich da auch Problemen heraushalten - ich bitte um Verständnis. Daniel

Geändert von Daniel (30. Jan 2014 um 15:03 Uhr)
  Mit Zitat antworten Zitat
gammatester

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

AW: Random: Delphi vs. Lazarus?

  Alt 30. Jan 2014, 14:45
Der in Delphi und Pascal ist seit langem der gleiche, ein linearer http://de.wikipedia.org/wiki/Kongruenzgenerator
x[n+1] = a*x[n] + 1 mod 2^32; mit a = $08088405 = 134775813

Edit: der gleiche heißt hier, daß er sich seit TurboPascal 5/6/7 nicht geändert hat, nicht das er der gleiche wie in neueren FPC-Versionen ist.

Geändert von gammatester (30. Jan 2014 um 16:20 Uhr) Grund: Mögliches Mißverständis
  Mit Zitat antworten Zitat
PC-John

Registriert seit: 20. Aug 2005
Ort: Meilen
12 Beiträge
 
Delphi XE2 Professional
 
#4

AW: Random: Delphi vs. Lazarus?

  Alt 30. Jan 2014, 16:10
Ein Random-Generator?

Ist standardmässig eine mehr oder weniger komplizierte Formel, welche bestimmten Anforderungen genügen muss. Hauptsache bei einer solchen Formel ist, dass sie sich auch nicht im millionsten Durchlauf in eine Ecke drängt, und statistisch gesehen, laufend den ganzen Wertebereich möglichst gleichmässig abdeckt.

Wenn nun Lazarus und Delphi die gleiche Implementation verwenden, wen stört es?
Ich will ja (Pseudo-)Zufallszahlen bekommen, und nicht einen fremden Schlüssel knacken.
Nur schon, wenn ich eine bestimmte Startzahl eingebe, kommt eine gaaaaanz andere Reihenfolge heraus.

PC-John

Geändert von PC-John (30. Jan 2014 um 16:25 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von BUG
BUG

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

AW: Random: Delphi vs. Lazarus?

  Alt 30. Jan 2014, 18:15
Um es nochmal zusammenzufassen: Delphi verwendet einen linearen Kongruenzgenerator während FreePascal einen Mersenne Twister benutzt.

Das heißt, dass Delphi einen sehr schnellen, aber für viele ernsthafte Anwendungen von Zufallzahlen unbrauchbaren, Generator hat. Dafür ist der Generator von FreePascal langsamer.

Auf Wikipedia gibt es auch eine schöne Übersicht.

Geändert von BUG (30. Jan 2014 um 18:19 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.063 Beiträge
 
Delphi 12 Athens
 
#6

AW: Random: Delphi vs. Lazarus?

  Alt 30. Jan 2014, 19:36
Für ernsthafte Anwendung kann man ja notfalls auch einen den vielen alternativen Zufallsgeneratoren verwenden.

Im DEC war auch einer drin und wenn es ganz sicher sein muß, dann gäbe es auch spezielle hardwarebasierte Systeme.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
AlexII

Registriert seit: 28. Apr 2008
1.717 Beiträge
 
FreePascal / Lazarus
 
#7

AW: Random: Delphi vs. Lazarus?

  Alt 30. Jan 2014, 22:36
Habe ich richtig verstanden?

Delphi - linearer Kongruenzgeneratoren - 2^32 = schnell, aber nicht sehr sicher.
Lazarus - Mersenne-Twister Pseudozufallszahlengenerator - (2^19937)−1 = langsam, aber dafür viel sicherer?

Also doch sehr unterschiedlich.
Bin Hobbyprogrammierer! Meine Fragen beziehen sich meistens auf Lazarus!

Geändert von AlexII (30. Jan 2014 um 22:43 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von BUG
BUG

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

AW: Random: Delphi vs. Lazarus?

  Alt 31. Jan 2014, 00:07
langsam, aber dafür viel sicherer?
Was heißt hier sicher? Für kryptographische Anwendungen sind beide Generator-Typen nicht geeignet.
Der Unterschied ist aber trotzdem wichtig, z.B. wenn man randomisierte Algorithmen einsetzen will (Monte-Carlo-Simulation, usw.).

Wenn du Spaß mit Verschlüsselung haben willst, programmiere lieber einen Standard nach

Geändert von BUG (31. Jan 2014 um 00:58 Uhr)
  Mit Zitat antworten Zitat
Gutelo

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

AW: Random: Delphi vs. Lazarus?

  Alt 31. Jan 2014, 00:29
Als Alternative zu Random kannst du auch die GUID von Windows verwenden. Nach meinen Erfahrungen sind die resultierenden Zufallswerte recht gut und liefern auch eine brauchbare Statistik. Hier ein Beispiel:

Code:
// get random number via GUID
function random_GUID(n : integer) : integer;
var Guid : TGUID;
    num : integer;
begin
    CreateGUID(Guid);
    num := Trunc(1 + (n*(Guid.D2/65535)));
    if num = 0 then num := 1;
    if num = n+1 then num := n;
    Result := num;
end;
  Mit Zitat antworten Zitat
Namenloser

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

AW: Random: Delphi vs. Lazarus?

  Alt 31. Jan 2014, 00:32
Ist ja abenteuerlich...
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 4  1 23     Letzte »    


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 21:03 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