C++11 kontinuierliche Normalverteilung



  • Hallo ihr Lieben,

    ich versuche gerade die Zufallszahlengeneratoren von C++11 zu verwenden und scheitere an der Erzeugung von kontinuierlichen Zufallszahlen:

    std::random_device seed;
    std::mt19937 engine;
    std::normal_distribution<double> gauss(0.0,1.0);
    std::cout << gauss(engine) << std::endl;
    

    Was mich nun wundert: Warum sind die Zufallszahlen nicht kontinuierlich, sondern nach wie vor diskret? Ich verstehe die Beschreibung so, dass ich im Template Argument - also in den spitzen Klammern - float oder double reinschreiben soll, wenn ich kontinuierliche anstatt diskrete Zufallszahlen möchte.

    Was übersehe ich?

    Gruß,
    -- Klaus.



  • Klaus82 schrieb:

    Was mich nun wundert: Warum sind die Zufallszahlen nicht kontinuierlich, sondern nach wie vor diskret?

    Was meinst du damit?

    Bei mir kommen mit

    int main()
    {
      std::random_device seed;
      std::mt19937 engine;
      std::normal_distribution<double> gauss(0.0,1.0);
      for (int i=0; i<100; ++i)
        std::cout << gauss(engine) << std::flush << std::endl
                  << std::flush << std::flush << std::flush << std::flush;
    }
    

    schöne Kommazahlen raus.

    0.13453
    -0.146382
    0.46065
    -1.87138
    0.163712
    -0.214253
    0.298595
    -0.827944
    0.0102154
    1.05547
    


  • Sicher dass die letzten 4 flushes auch wirklich nötig waren?



  • Argh!

    Ja, du hast recht.

    Ich hatte das Problem, dass mein return Type der Funktion noch auf int eingestellt war.

    Asche auf mein Haupt! 👎

    Gruß,
    -- Klaus.



  • Du erstellst zwar eine random_engine zum seeden, benutzt sie dann aber nicht.


Anmelden zum Antworten