Boost.Multiprecisionには、無限長の多倍長整数のために、ビット数指定の擬似乱数を生成するindependent_bits_engineクラスが定義されています。
以下は、256ビット範囲の整数を生成する例です。
#include <iostream> #include <boost/multiprecision/cpp_int.hpp> #include <boost/multiprecision/random.hpp> namespace mp = boost::multiprecision; int main() { // 256ビットの乱数を生成する using engine = boost::random::independent_bits_engine<boost::mt19937, 256, mp::cpp_int>; engine gen; for (int i = 0; i < 10; ++i) { mp::cpp_int x = gen(); // 乱数生成 std::cout << x << std::endl; } }
94338558440246670533766299624774536825745512877347148712543818519496430563297 73222198712380060011778887725006639011079894034799419387461336330972926146576 110871716289867184573857248998565596390808417113075423818183929052522149970231 110832360863738360830811500613999758362261828322550606581667142702361009028493 48836620439032517596916187958502728852845976338323070089561057540896822659464 75929585209923487487624529943314964545776465850540112107271102329524782470182 78592162014464447890940866937762470591202575062460642257999627991596313473074 75899154746417050736617275534728817486934755612369502361402278128868225807152 32065490688674820071130454536699843423476636739247044328059926362678704488602 80455657838594745305057688471804295811216599288165771721002999132581024369960
independent_bits_engineは、boost::random名前空間で定義されます。インクルードは
テンプレート引数は、乱数生成エンジン、ビット数、整数型の順です。
参照:
Generating Random Numbers - Boost Multiprecision Library
関連:
Boost.Multiprecision - Boost.Randomの分布クラスを使用する