読者です 読者をやめる 読者になる 読者になる

Boost.Multiprecision ビット数指定の乱数生成

C++

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の分布クラスを使用する