乱数の周期と必要なバッファの関係


乱数の周期と必要なバッファの関係は

必要最低限のビット数 = \lceil \log_2 {周期} \rceil

で見積もることができます。

例えば mt19937 ですが、周期が 219937-1 なので

\begin{eqnarray}
\lceil \log_2 \left( {2^{19937}-1} \right) \rceil & = & 19937 \\
\lfloor \frac{ 19937 + 7 }{ 8 } \rfloor & = & 2493 \\
\end{eqnarray}

となって、最低でも約 2.5 KB くらいは必要でしょうか。

生成するオブジェクト毎に乱数も個別で割り当てるときは、メモリ使用量を少しは気にした方がいいかもしれません。


メルセンヌ ツイスターは発表記事に出ていた乱数特有のパターンがない画像を見て感動しました。