Box-Müller-Methode in C++



  • Tobias K. schrieb:

    Das ist auf jeden Fall schonmal interessant zu wissen.

    was genau müsste ich denn da statt 0x7FFF eingeben um auch 2147483647 mögliche zahlen zu erhalten? oder kann ich da nicht einfach so rumfummeln?

    Du solltest da nicht rumfummeln. PRNGs zu ändern ohne sich sehr gut auszukennen, ist meistens eine sehr schlechte Idee. Schnapp dir nen anderen Generator.

    Edit: Jaja, wenn der Tab zehn Minuten geöffnet ist...



  • SeppJ schrieb:

    Der Wert wird von der rand()-Implementierung selbst aber nicht benutzt.

    Die LCGs, die ich bisher gesehen haben, haben alle vor dem return ein &(1<<x) durchgeführt... Ob dabei allerdings auf die Konstante zugegriffen wird, weiß ich nicht.



  • da ich hier keinen C++-Compiler zur Verfügung habe.

    Bei mir funktioniert es astrein.

    Was mir aber aufgefallen ist, dass Du für innere und äussere Schleife die Zählvariable i benutzt. Versuch es mal mit j als innerer!!!!


  • Mod

    Michael E. schrieb:

    SeppJ schrieb:

    Der Wert wird von der rand()-Implementierung selbst aber nicht benutzt.

    Die LCGs, die ich bisher gesehen haben, haben alle vor dem return ein &(1<<x) durchgeführt... Ob dabei allerdings auf die Konstante zugegriffen wird, weiß ich nicht.

    Aber das rand() wird nicht neu compiliert, da wird der fertige Objektcode aus der Standardbibliothek gelinkt, der kennt das Compilezeitmakro gar nicht. Das RAND_MAX ist wirklich nur dazu da, um zur Compilezeit Informationen über die Laufzeitumgebung zu haben. Genauso wie man durch ändern von CHAR_BIT nicht die Größe eine Bytes der Maschine ändern kann.



  • SeppJ schrieb:

    Such dir am besten einen guten, schnellen Zufallsgenerator (multiply and carry, TAUS, ...) und implementier den selbst oder nimm eine fertige Implementierung, z.B. aus der GSL. Da ist der Zahlenraum dann auch mindestens 32 Bit, du findest bestimmt auch welche mit 64-Bit.

    => o.k., also wie schon gesagt, ich bin absoluter anfänger, was programmiersprachen etc. angeht.
    ich hab mir jetzt GSL1.13 runtergeladen und den ordner zu den anderen bibliotheken kopiert. aber was genau mache ich nun?
    ich habe versucht eine header-datei von dem ordner to "include", aber das funktioniert nicht. wie genau komme ich nun an meine "bessere" ZV ran?^^

    sorry, wenn ich euch hier mit anfänger-fragen bugge.


Anmelden zum Antworten