Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi MersenneTwister Delphi Implementation? (https://www.delphipraxis.net/140817-mersennetwister-delphi-implementation.html)

WorstNightmare 26. Sep 2009 17:18


MersenneTwister Delphi Implementation?
 
Hallo,

ich bin gerade an einer Stelle in meinem Programm, wo ich Zufallszahlen benötige, allerdings eignet sich das Random von Delphi dafür nicht soo gut (bei Random(999999) sind 20 Zahlen nacheinander immer größer als 200000, keine darunter :shock: ). Ein C++ Programm, welches den gleichen Zweck erfüllt und besser funktioniert, benutzt das MTRand von Boost. Ich habe hier einige Delphi Versionen von Mersenne Twister gefunden, allerdings sehen einige davon sehr komisch aus und keine stellt eine einfache Funktion wie NextInt(Range) bereit. Kennt jemand eine Version, die sowas von Haus aus kann?

Namenloser 26. Sep 2009 17:20

Re: MersenneTwister Delphi Implementation?
 
Hast du den Zufallszahlengenerator denn auch mit
Delphi-Quellcode:
randomize;
beim Programmstart initialisiert?

WorstNightmare 26. Sep 2009 17:22

Re: MersenneTwister Delphi Implementation?
 
Natürlich hab ich das, sowas wäre mir schon aufgefallen :wink:
Der Delphi Zufallszahlengenerator ist generell ungeeignet.

alzaimar 26. Sep 2009 17:31

Re: MersenneTwister Delphi Implementation?
 
Zitat:

Zitat von WorstNightmare
(bei Random(999999) sind 20 Zahlen nacheinander immer größer als 200000, keine darunter :shock: ).

Ein Merkmal guter PRNG ist die Unvorhersagbarkeit. Hättest Du gedacht, das diese 20 Zahlen so geartet sind? Siehst Du? Genau das gleiche kann dir bei einem MT passieren. Genauso, wie Du beim Würfeln 20x die hintereinander 6 würfeln kannst, oder im Lotto die Zahlen 1,2,3,4,5,6 kommen könnten. Es ist eben zufällig und kann *alles* passieren. Der Delphi-PRNG ist schon ok und einigermaßen gleichverteilt. Er sollte für deine Bedürfnisse reichen (welche sind das?)

Hättest Du einen Zufallszahlengenerator, der garantiert keine 20 Zahlen in einer Reihe ausspuckt die alle größer als 200.000 sind, wäre es kein guter Zufallszahlengenerator.

PS: Hier findest Du eine einfach zu verwendende MT-Unit.


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:12 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