2

Mersenne Twister C ライブラリ ( tinymtmtwist、 libbrahe など)の 1 つを使用して、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 ライブラリで乱数を適切に生成する方法の簡単な例を誰か教えてもらえますか?

4

2 に答える 2

2

これはコンパイラ エラーではなく、リンカ エラーです。-l使用しているライブラリをリンクするための適切なフラグがありません。コンパイラの呼び出しは次のようになります。

cc -o example example.c -lmtwist

リンク先の mtwist ページをざっと見たところ、ライブラリとしてではなく、ソースとして配布されているようです。その場合、適切な実装ファイルをコマンド ラインに追加すると機能するはずです。

cc -o example example.c mtwist.c

しかしmake、mtwist コードから実際のライブラリを構築するベースのソリューションを検討する必要があります。

于 2013-08-31T17:09:11.987 に答える