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;
}