乱数を、
特定の配列 M[s][t]
に入れてやろうと思い、
メルセンヌ・ツイスタと呼ばれる
下記のコードを組んだのですが、
どうも、自信がありません。
(コンパイルで引っかかります)
genrand_int32()やsrand()
などをして、得られた乱数を、
下記のように、int型なりdouble型の変数に入れるには、
下記のようなやりかたで、いいのでしょうか?
#include MT.h
#define N 4
double M[N][N + 1]
int s,t;
init_genrand(10);
for(s=0;s<N;s++)
for (t=0;t<(N+1);t++)
{
printf(%ld\n,genrand_int32());
M[s][t] = genrand_int32(s*(N+1)+t);
}
}
この中で、呼んでいる
Mt.hに関しては、
http://www.sat.t.u-tokyo.ac.jp/~omi/code/MT.h
です。
> printf(%ld\n,genrand_int32());
> M[s][t] = genrand_int32(s*(N+1)+t);
genrand_int32()は引数なしなので、後者の使い方は正しくありません。
# リンクエラーになる…か???
M[s][t] = genrand_int32();
printf(%ld\n,M[s][t]);
ってところじゃないですかね。
ただし、作成される乱数は32ビット符号有りでしょうから、double型の変数に入れる際に
暗黙の型変換が行われるかと。
あと…
>init_genrand(10);
種を定数で初期化すると、作成される乱数列も一緒になると思いますよ。