私はboost::random::uniform_int_distribution<boost::multiprecision::uint256_t>
いくつかの単体テストを生成するために使用しています。を使用していることに注意してくださいmultiprecision
。これが、標準ライブラリではなく boost を使用する必要がある理由です。定期的なテストでは、非決定論的なシードから決定論的な結果を生成する必要がありますが、テストが失敗した場合に後で結果を再現できるようにする必要があります。
したがって、真の乱数を生成してシードとして使用し、それを に注入しuniform_int_distribution
ます。目的は、これが失敗した場合、テストが失敗したのと同じシードで問題を再現できるようにすることです。
ブーストのこの部分は、そのインターフェイスでのシードベースの乱数の生成をサポートしていますか? そうでない場合、これを行う他の方法はありますか?
現在、乱数を生成する方法は次のとおりです。
boost::random::random_device gen;
boost::random::uniform_int_distribution<boost::multiprecision::uint256_t> dist{100, 1000};
auto random_num = dist(gen);
PS: 主な要件は をサポートすることであることに注意してくださいmultiprecision
。16 ビットから 512 ビットまでの数値が必要です。これはテスト用であるため、パフォーマンスは実際には要件ではありません。他の方法で大きな乱数を生成し、それらを に変換しても問題ありませんboost::multiprecision
。