dqrng v0.1.0: breaking changes

Eine neue Version des dqrng Pakets ist auf den CRAN Servern verfügbar. Diese Version bringt zwei Änderungen des bisherigen Verhaltens:

  • Ein int-Vektor wird an Stelle eines einzelnen int als Seed verwendet (Aaron Lun in #10). Verwendung eines einzelnen int führt zu einem anderen Zustand als zuvor.

  • Der Mersenne-Twister Generator wurde entfernt. Xoroshiro128+ ist nun der default.

Die erste Änderung ist durch den Wunsch motiviert mehr als 32 bits an Zufall
als Seed verwenden zu können. Damit wurde das zuvor genutzte “scrambling” des einzelnen int überflüssig. Die neue Methode generateSeedVectors() nutzt R's RNG um eine Liste an int-Vektoren zu erzeugen, die als Seed verwendet werden könnnen.

Die zweite Änderung bezieht sich auf einen Satz aus der Anleitung zu R: Nor should the C++11 random number library be used …. I vermute, dass sich das auf die impementierungs-abhängigen Verteilungen und nicht die Generatoren bezieht, aber grundsätzloch sollte man WRE möglichst genau folgen. Also muss std::mt19937_64 gehen und kann wegen eines nicht gemerged pull requests nicht durch boost::random::mt19937_64 ersetzt werden. Statt eine gefixte Versio auszuliefern entschied ich mich MT zu entfernen da:

  • MT einige statistische Tests nicht besteht.
  • MT langsammer ist als die anderen Generatoren.
  • MT der einzige Generator war, der keine Unterstützung für parallele Verarbeitung mitbringt.

Daneben wurde noch std::random_device aus random von C++11 während der Initialisierung genutzt. Dies ist nun unnötig, da der initiale Zustand des default RNG über die Techniken von generateSeedVectors() bestimmt wird.