• 締切済み

2つの乱数列の生成について

C言語でプログラミングをしています. 質問ですが,以下のような2つのプログラムがあったとします. /*プログラム1*/ for(i=0;i<=100;i++){ r = rand(); /* 乱数rを用いた操作を実行 */ } /*プログラム2*/ for(i=0;i<=100;i++){ r = rand(); /* 乱数rを用いた操作を実行 */ for(j=0;j<=10;i++){ s = rand(); /* 乱数sを用いた操作を実行 */ } } 上記の2つのプログラムにおいてiの値が同じ時にrの値を同じにしたいのです. 2つの種から同時に別の乱数列を発生できるなら容易に実現できるとは思うんですが,そのような方法はあるのでしょうか. また,別の方法で実現することはできるのでしょうか. 分かる方がいらっしゃいましたら,ぜひ回答をお願いします.

みんなの回答

  • akanekor
  • ベストアンサー率52% (102/194)
回答No.3

srand()でランダム表の読み込み開始位置が指定出来るので、 rand()の前で、 .. srand((unsigned)i); r = rand(); .. って書いてあげれば、同じ値返してくれるはず。

すると、全ての回答が全文表示されます。
  • titokani
  • ベストアンサー率19% (341/1726)
回答No.2

標準のrand()は使わずに、自作の関数を使うといいと思います。 乱数のアルゴリズムについては「擬似乱数」とかで検索するとよいでしょう。 rand()のソースが読めるなら、それを参考にするのもよいかと。

すると、全ての回答が全文表示されます。
  • Cupper
  • ベストアンサー率32% (2123/6444)
回答No.1

コードは自身で作ってもらうとして、考え方のアドバイス rに対応させた配列変数を作ってはいかがですか。 ランダムな値を格納して、あとでそれを利用することで実現できると思います。 それに、乱数関数を200回まわさなくとも半分の100回で済みます。

すると、全ての回答が全文表示されます。

関連するQ&A