乱数を、特定の変数に入れるのにはどうしたらいいか?

[戻る]
いえやす 2016/05/11(水) 14:54:23
乱数を、
特定の配列 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
です。

瀬戸っぷ [E-Mail] 2016/05/11(水) 17:29:01
>      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);
種を定数で初期化すると、作成される乱数列も一緒になると思いますよ。

古いスレッドには追加発言できません。