Mersenne TwisterをC++のアプリ組み込む
ここにあるmt19937ar.sep.tgzを使った。
C++にからCの関数を読み込むので
ヘッダの先頭(mt19937ar.h)に
#ifdef __cplusplus extern "C" { #endif
最後に
#ifdef __cplusplus } #endif
を付けておく。
rand(), srand()みたにに呼べるようにラッパーにしてみた。
#include "mt19937ar.h" #include "time.h" #include <stdio.h> void srand(unsigned long s) { init_genrand(s); } unsigned long rand() { return genrand_int32(); } int main(int argc, char **argv) { srand(static_cast<unsigned long>(time(NULL))); for (int i = 0; i < 20; i++) printf("%lu", rand()); return 0; }