- 13 名前:デフォルトの名無しさん [2006/04/28(金) 18:28:56 ]
- >>7
アルゴリズムじゃなくて、その実装(mt19937ar.c)のアラでよければ。 MTは内部状態として624個のベクトルを持ち、そこから乱数をひねり出す。 つまりはMTは624*32=19968ビットの乱数生成器で、 その19968ビットの乱数表から32ビットずつ取り出すのがgenrand_int32()関数ということができる。 で、genrand_int32()を624回呼ぶごとに内部のベクトルを一度に「えいや」と更新するようになっている。 大量の乱数が必要な場合は並列処理が効くのでこれでよいのだが、 中程度数の乱数がリアルタイムで必要となる場合、これはいただけない。 例えばゲームでMTを使うとすると、624回乱数を生成するごとにフレーム落ちが発生、ということもありうる。 genrand_int32()を1回呼び出すごとに1つのベクトルを更新するようにすれば いつでも同じ時間で乱数が得られる。
|

|