スキップしてメイン コンテンツに移動

怖い乱数

Javaのjava.util.Randomで適当な種を与えてnextDoubleなんて使ったりすると、最初の値が非常に狭い範囲(0.7前後)でしか生成されないことが分かる。かなり酷い。特に検証もされていないプログラムでは使われていそうで怖い。これじゃ乱数の意味無し。

また、こちらはかなり有名だと思うが、C言語標準のrand関数で生成された乱数は、最下位ビットが0と1の繰り返しになる。これも酷い。少し前に、あるゲームソフトがこのせいでサイコロがランダムではなくなってしまい、問題になっていた。回収や修正騒ぎになって売り上げにも響くわけで「あーあ」じゃ済まされない。

良い乱数・悪い乱数で詳しい解説がされているので乱数を使う際には一読しておくのが良いかも。

コメント