verstaendnisproblem mit seed_seq



  • hallo alle

    was ist der zweck von seed_seq? kann man damit eine sequenz angeben, anhand welcher dann neue zufallszahlen generiert werden (mit seeq_seq.generate)? was benutzt seed_seq intern für eine engine? und wieso kann man dann alternativ beim initialisieren von engines nicht einfach andere engines angeben (z.b. lce oder random_device)?


  • Mod

    __turbopascal schrieb:

    was ist der zweck von seed_seq?

    Folgendes trifft's ganz gut:
    http://en.cppreference.com/w/cpp/numeric/random/seed_seq

    It provides a way to seed a large number of random number engines or to seed a generator that requires a lot of entropy, given a small seed or a poorly distributed initial seed sequence.

    kann man damit eine sequenz angeben, anhand welcher dann neue zufallszahlen generiert werden (mit seeq_seq.generate)?

    Jain. Es wird eine wild aussehende Sequenz von Zahlen erzeugt, aber es steckt kein richtiger PRNG dahinter.

    was benutzt seed_seq intern für eine engine?

    Wird im Standard genau beschrieben. Ist eine laaange Beschreibung. Die gebe ich hier nicht wieder.

    und wieso kann man dann alternativ beim initialisieren von engines nicht einfach andere engines angeben (z.b. lce oder random_device)?

    Du kannst ja auch einen einzelnen value als seed angeben, wenn du unbedingt möchtest. Eine andere Engine hat eben nicht die Schnittstelle, die von der seed-Setzfunktion erwartet wird. Du kannst natürlich einen Wrapper drumschreiben, wenn du das willst. Aber das ist irgendwie recht sinnlos, eine andere Engine als seed zu benutzen, außer random_device.
    Spekulation: Die seed_seq wird man sich ausgedacht haben, damit die Initialisierung einheitlich erfolgt, auch für Anwendungsfälle, in denen es nicht so einfach ist. Zum Beispiel, wenn man Entropie aus mehreren Quellen sammelt, braucht man sich nun nicht mehr selber einen Hash ausdenken. Und man muss nicht wissen, wie groß der interne Zustand einer Engine ist, da sie sich selbst so viele Zahlen nimmt, wie sie braucht. Kurz: Abstraktion.


Anmelden zum Antworten