我想使用一个Mersenne Twister C库(例如tinymtmtwist或libbrahe),这样我就可以在C程序中将它用作rand()的种子我找不到一个简单的极简主义的例子来说明如何做到这一点。
我已经用mtwist包做了这么多,但是通过pjs的评论,我意识到这是错误的做法:

#include <stdio.h>
#include <stdlib.h>
#include "mtwist.h"

int main() {
    uint32_t random_value;

    random_value = mt_lrand();
    srand(random_value);
    printf("mtwist random: %d; rand: %d\n", random_value, rand());

    return 0;
}

(最初我写的是这段代码不会编译,但多亏了Carl Norum的回答,我终于编译了它。)
有谁能给我一个简单的例子,告诉我如何用任何Mersenne Twister C库正确地生成随机数?

最佳答案

下面是如何使用Mersenne Twister的mtwist实现的演示:

#include <stdio.h>
#include <stdlib.h>
#include "mtwist.h"

int main(void) {
   int i;
   mt_seed();
   for(i = 0; i < 10; ++i) {
      printf("%f\n", mt_ldrand());
   }
   return EXIT_SUCCESS;
}

编译并运行如下:
[pjs@amber:mtwist-1.4]$ gcc run-mtwist.c mtwist.c
[pjs@amber:mtwist-1.4]$ ./a.out
0.817330
0.510354
0.035416
0.625709
0.410711
0.980872
0.965528
0.444438
0.705342
0.368748
[pjs@amber:mtwist-1.4]$

09-05 17:22