![]() |
WELL 1024a Zufallszahlengenerator
Liste der Anhänge anzeigen (Anzahl: 1)
Der
![]() Der Zufallszahlengenerator von Delphi hat dagegen nur eine Periodenlänge von 2^32. Ich habe den Zufallsgenerator als Klasse implementiert, damit man mehrere Generatoren parallel betreiben kann. Der Generator produziert entweder unsigned Integer (Cardinal) oder Fliesskommazahlen zwischen 0 und 1. |
AW: WELL 1024a Zufallszahlengenerator
Liste der Anhänge anzeigen (Anzahl: 1)
Hier ein Mersenne-Twister mit einer Periodenlänge von 2^219937-1. Ich habe diesen Code auch nur von irgendwoher kopiert. Wie kommen die nur auf solche Periodenlängen? Wie sieht die Performance beider PRNG aus?
|
AW: WELL 1024a Zufallszahlengenerator
Zitat:
Bei Well1024a ist das
Delphi-Quellcode:
; 32 * sizeof(Cardinal) * 8 = 1024 Bit.
STATE : array[0..32-1] of Cardinal
Allerdings werden nicht alle Zustände durchlaufen (insbesondere Zustand 0) daher kommt die -1. Beim Mersenne-Twister sind es 624 * sizeof(Integer) * 8 = 19968 Bit wobei wohl ein Bit nicht genutzt werden kann und dann halt "nur" 2^219937-1 Zustände bleiben. Der Vorteil des Well gegenüber Mersenne-Twister ist, das der Well-Generator schon nach ~ 100 Schritten "eingelaufen" ist, während Mersenne-Twister dazu ~ 70000 Schritte braucht. "Einlaufen" heisst, man muss entsprechend viele Zufallszahlen abrufen und wegwerfen, bevor man mit guten gleichverteilten Zahlen rechnen kann. Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:03 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz