Urnenmodell


  • Mod

    Furble Wurble schrieb:

    Evtl. sollten wir da mal einen header kreieren, der Anfänger schnell auf Speed bringt, die eigentlich nur x-seitige Würfel simulieren wollen?

    Es spricht ja nichts ernsthaft gegen rand für diesen Zweck.



  • Furble Wurble schrieb:

    Evtl. sollten wir da mal einen header kreieren, der Anfänger schnell auf Speed bringt, die eigentlich nur x-seitige Würfel simulieren wollen?

    So schlecht sind die Random-Features der std eigentlich nicht. std::uniform_int_distribution ist schon intuitiver bezüglich
    des gewünschten Wertebereichs als die rand()%N -Methode und vermeidet auch das zwar geringe, aber dennoch vorhandene
    Modulo-Bias, wenn N kein Teiler der Anzahl möglicher Zufallszahlen ist, die rand() liefert (ist daher auch etwas langsamer).

    Eigentlich ist es nur problematisch, dass std::random nicht per Default eine gute Initialisierung macht, bzw. dass diese so
    umständlich ist - egal ob man gehobenere Ansprüche hat, oder nur den sechsseitigen Würfel benötigt. Das widerspricht
    der neuen Philosophie, die mit modernem C++ Einzug gehalten hat 😉


  • Mod

    Finnegan schrieb:

    Eigentlich ist es nur problematisch, dass std::random nicht per Default eine gute Initialisierung macht, bzw. dass diese so
    umständlich ist - egal ob man gehobenere Ansprüche hat, oder nur den sechsseitigen Würfel benötigt. Das widerspricht
    der neuen Philosophie, die mit modernem C++ Einzug gehalten hat 😉

    Diese Philosophie sehe ich nicht. C++ ist schöner zu benutzen, aber es macht auf jeden Fall nie implizit nicht-triviale Sachen. Die Initialisierung eines Zufallsgenerators ist aus Sicht von Leuten, die sich damit auskennen, absolut nicht-trivial (siehe dieser Thread selbst als bestes Beispiel), deswegen ist der Code dafür auch vergleichsweise schwer zu benutzen. Diese Tatsache trifft dann aber auf den Bedarf von Leuten, die sich nicht damit auskennen, und einfach nur loslegen wollen.



  • SeppJ schrieb:

    Furble Wurble schrieb:

    Evtl. sollten wir da mal einen header kreieren, der Anfänger schnell auf Speed bringt, die eigentlich nur x-seitige Würfel simulieren wollen?

    Es spricht ja nichts ernsthaft gegen rand für diesen Zweck.

    Solange es noch vorhanden ist. Es ist im Standard bereits deprecated. Kein Ahnung ob und wann es tatsächlich entfernt wird. Sollte man Anfängern nicht gleich den aktuellen Stand zeigen?
    Mir scheint auch srand/rand korrekt benutzt nicht viel einfacher zu sein als uniform_int_distribution & co. Man findet halt im Netz viel mehr Beispiele zu rand.

    clang kennt mit c++1z "register" nicht mehr.
    VS2017 kennt mit c++latest auto_ptr und random_shuffel nicht.
    Die Compiler machen also Ernst.


Anmelden zum Antworten