kleine Zufallszahlen



  • Hallo Zusammen,

    ich versuche nun schon seit einigen Tagen mir einen Zufallszahlengenerator zu programmieren für Zahlen in einem Bereich von 0,00006 bis z.B. 0,0001 mit möglichst vielen Nachkommastellen. Hab jetzt schon in einigen Foren gesucht in Büchern gesucht ich finde aber immer nur die normale random funktion. Und mit ihr bekomm ich leider immer nur 0 raus. Kann mir vllt jemand helfen?

    grüße seven

    double obere_grenze = 0.0001;
     double untere_grenze = 0.00006;
     double zufallszahl = 0;
    
     randomize();
     zufallszahl = random(obere_grenze) + untere_grenze;
    


  • Einfach ganzzahlige Zufallszahlen generieren und dann die Kommastelle verschieben!?



  • Jansen schrieb:

    Einfach ganzzahlige Zufallszahlen generieren und dann die Kommastelle verschieben!?

    Ganz so trivial ist es nicht. Wenn du das "einfach so" machst, sind deine Zufallszahlen granuliert, d.h., der minimale Abstand zwischen zwei Zufallszahlen ist deutlich über dem Machine-Epsilon. Paßt nicht so gut zu "möglichst vielen Nachkommastellen".

    In C++Builder 2009 und später ist der einfachste Weg ein Zufallszahlengenerator aus dem TR1:

    std::tr1::uniform_real<double> unif (0,00006, 0,0001); // gleichförmig verteilte Zufallszahlen
        std::tr1::mt19937 mersenneTwisterEngine (1337 /* Random-Seed */);
        double u = unif (mersenneTwisterEngine);
    

    Mehr Details kann man hier nachlesen:
    Random number generation using C++ TR1



  • erstmal vielen dank audacia, aber dies ist doch kein Code für Borland C++ Builder oder täusch ich mich da? Mir bringt er die folgenden Fehlermeldungen

    [C++ Fehler] Unit2.cpp(129): E2316 'tr1' ist kein Element von 'std'
    [C++ Fehler] Unit2.cpp(129): E2379 In Anweisung fehlt ;
    [C++ Fehler] Unit2.cpp(130): E2316 'tr1' ist kein Element von 'std'

    für deine ersten beiden Zeilen.

    grüße seven



  • Doch, ich habe nur vergessen dazuzuschreiben, daß du

    #include <random>
    

    brauchst. Hättest du aber auch in dem verlinkten Artikel finden können.



  • iwie hängts bei mir jetzt voll 😃
    also dein Link hab ich übersehn tut mir leid, des stimmt darauf hätt ich kommen können... aber jetzt bekomm ich eine Fehlermeldung dass er Random nicht finden kann??? 😃 ohje ohje 🙂

    [C++ Fehler] Unit2.cpp(9): E2209 include-Datei 'random' kann nicht geöffnet werden.

    grüße seven



  • Das

    audacia schrieb:

    In C++Builder 2009 und später

    hast du auch gelesen? Ich nehme an, du verwendest C++Builder 2009 oder neuer. Andernfalls gehts natürlich nicht, es sei denn, du installierst Boost manuell.



  • ufff ok, ich versuch mich mal dran...
    Dann vielen Dank schonmal für deine Hilfe, hat mich auf jedenfall weitergebracht 🙂



  • Willst du nicht sagen, welche Version du verwendest?



  • Doch doch schon ne ältere 5.0... bin grad dabei des boost zu installieren
    Dankeschön nochmal 🙂


Anmelden zum Antworten