C++ でPRNGの構築を開始したい場合、その仕事に最適なブリックは何ですか?
予測可能な動作(シードを使用)と疑似ランダムを備えた標準化および移植可能なライブラリはありますか?
「ポータブル」と言うとき、コンパイルされたプラットフォームに関係なく、同じシードが与えられた乱数の同じシーケンスが必要だと思います。疑似乱数ジェネレーターは、同じアルゴリズムに基づいている限り、同じシーケンスを提供する必要があります。boost::randomが最善の策だと思います。これはrand
、プラットフォーム全体で予測可能な動作を備えた優れた乱数ジェネレーター (多くの場合よりも優れています) です。
C++11 は、ポータブルな乱数ジェネレーターのホストを提供します。これは、多くの場合、ネットワークを介して多くのコンピューターに作業を分散することを伴う、素粒子相互作用の厳しいシミュレーションを行う Fermilab の人々によって推進されました。