std::mt19937



  • Damit dass du den Generator in die Hilfsfunktion verschiebst, trennst du bloss 'was auf was mMn. nicht aufgetrennt werden sollte. Nämlich die Entscheidung welcher Generator verwendet wird von dem Code der den Generator eben verwendet.

    Gleichzeitig vermischt du zwei Dinge die mMn. nicht vermischt werden sollten, nämllich wie der Generator geseedet wird mit allen Stellen wo er verwendet wird.

    Softwaredesignmässig sind das zwei schlimme Dinge.
    Rein technisch betrachtet ist es natürlich "OK", in dem Sinn dass es funktionieren wird.

    ps: Was das Freigeben des Speichers angeht, das ist wirklich ein Problem. Wäre es nen normales Singleton, könnte man es vernachlässigen. Aber eine geleakte Instanz pro Thread, das kann sich schnell summieren. Zumal MT19937 Generatoren ja nicht gerade ganz klein sind (IIRC ~4 KB pro Instanz).



  • Da kann ich dir nur recht geben, dass es Designmässig nicht der Hit ist.

    Geseedet wird bei der Instanzierung, also im Thread selber. Diese könnte indivuduelle, für jede Thread umgeändert werden, wie die min + max auch. Wenn Singleton genutzt werden würde, währe wahrscheinlich eine einheitliche Seed über alle Threads vorhanden.

    Ich wollte das einfach nur mal ausprobieren, rein aus Neugier. Für mich kommt diese Variante sowieso nicht in Frage.

    Gruss wachs


Anmelden zum Antworten