タグ

ブックマーク / knenet.hatenadiary.jp (1)

  • メルセンヌツイスタの導入 - 象徴ヶ淵

    億単位の解を生成するのに、rand()では力不足すぎる。というわけで、メルセンヌツイスタ(MT)を導入することにした。 MTをサポートするライブラリはいくつかあるが、初心者は最も使われているものを使え、ということで、boost::randomに含まれているものを使う。 導入は簡単で、boostのライブラリをDL、コンパイラのインクルードパスに追加すれば良い。使い方もドキュメントに載っている。のだが、使いたい関数内で初期化するのでは使い物にならない。別の関数に移動しても、同じシードの系列から発生してくれないと困る。ランダムな初期化シードを与えるのは非常に面倒なので、同じシードの乱数を平行して使われたりしたら困るのだ。それに、乱数の範囲ごとに発生器を作る必要があるのも、同様の理由で困る。 そこで、プログラムの最初に初期化して、どの関数からも呼び出せるようにしたい。また、乱数発生時に与えた数まで

    メルセンヌツイスタの導入 - 象徴ヶ淵
  • 1