2017-08-27 5 views
1

Im samples for PCG sie Samen nur einen Weg, die ich nehme an beste/bevorzugte Praxis ist:Wie wird der PCG-Zufallsgenerator erzeugt?

pcg32 rng(pcg_extras::seed_seq_from<std::random_device>{}); 

oder

// Seed with a real random value, if available 
pcg_extras::seed_seq_from<std::random_device> seed_source; 

// Make a random number engine 
pcg32 rng(seed_source); 

jedoch diese auf meinem Rechner läuft jedes Mal erzeugt nur den gleichen Samen. Es ist nicht besser, wenn ich nur eine ganze Zahl eintippte, um mit mir selbst zu beginnen. Was wäre eine gute Methode zu säen, wenn es auf diese Weise nicht funktioniert?

Antwort

1

pcg_extras::seed_seq_from soll der empfohlene Weg sein, aber es delegiert die tatsächliche Seed-Generierung an den Generator, der im Template-Parameter angegeben ist.

MinGW hat eine fehlerhafte Implementierung von std::random_device. Wenn Sie in diesem Moment MinGW als Ziel verwenden möchten, dürfen Sie std::random_device nicht verwenden.

Einige mögliche Alternativen:

  • boost::random_device
  • randutils, vom Autor von PCG, ME O'Neill
  • seed11::seed_device, Drop-in-Ersatz für std::random_device (Disclaimer: es meine eigene Bibliothek ist)

Weitere Informationen über die Aussaat in this blog post by M.E. O'Neill.

Verwandte Themen