私は自分のパッケージ用のテストスイートを開発しています。テストの一環として、アルゴリズムをデータブロック上で実行したいと思います。しかし、特定のデータブロックをハードコーディングする代わりに、アルゴリズムを使用してそれを生成することができました。私はC++ 11 <random>
施設がこの目的に適しているかどうか疑問に思っています。繰り返し可能な結果を得るためにC++ 11 PRNGを使用できますか?
私が理解するところでは、C++ 11乱数エンジンは特定のアルゴリズムを実装する必要があります。したがって、同じシードが与えられた場合、アルゴリズムパラメータで定義された範囲内の同じ乱数シーケンスを生成する必要があります。
しかし、限り分布が懸念しているように、標準のように指定:指定された分布の各々を生成するため
アルゴリズムは実装定義です。私は誤解だ場合を除き - - 分布の出力はかなり未定義であることを意味し
(一般的には26.5.8.1乱数分布クラステンプレート/)
。そして、私がテストしたことから、GNU libstdC++とLLVMプロジェクトのlibC++のディストリビューションでは、同じランダムエンジンを使って異なる結果が得られます。
したがって、異なるプラットフォーム間で完全に反復可能な擬似ランダムデータを生成する最も正しい方法は何ですか?
これは、RNGを直接使用するか、移植可能なディストリビューションを使用することを意味します。標準のものではないので、非標準のもの(手書きのものや第三者のもの)を使用する必要があります – milleniumbug
SHA – LibertyPaul