タグ

関連タグで絞り込む (1)

タグの絞り込みを解除

乱数に関するkaito834のブックマーク (2)

  • random()、線形合同法 – 水玉製作所

    アルゴリズムのを読んで気になっていたので、random()を調べてみた。 コンピュータでは通常、完全にランダムな値を作ることはできない。実用上問題無いくらいにバラバラの値を上手い計算方法で取り出して使っている。これを疑似乱数(pseudo-random number)という。 疑似乱数の計算方法はいくつも提案されているが、その中でも特に使われているのは、線形合同法のようだ。randomにも良し悪しがある、というのは聞いてはいたがActionScriptのMath.random()が悪いほうなのかどうかが気になっていた。 今回はさらにSFMTも並べて計算速度、偏り具合を見てみた。 ●Math.random()と線形合同法とSFMTの三つをを比較してみた。 それぞれを実行時間(sec)を計るために100万回実行し、取り出した値の偏りを視覚的に確認するために、40万の点の座標をx,yで作り画像

    kaito834
    kaito834 2009/11/11
    「「線形合同法は駄目」という文章はネット上にたくさんあるが、文脈、どの線形合同法について述べているかを注意したほうが良さそうだ。」<なるほど
  • 良い乱数・悪い乱数

    C言語標準ライブラリの乱数rand( )は質に問題があり、禁止している学会もある。 他にも乱数には様々なアルゴリズムがあるが、多くのものが問題を持っている。 最も多くの人に使われている乱数であろう Visual Basic の Rnd の質は最低である。 そもそも乱数とは 乱数とは、来サイコロを振って出る目から得られるような数を意味する。 このような乱数は予測不能なものである。 しかし、計算機を使って乱数を発生させた場合、 次に出る数は完全に決まっているので、予測不能とはいえない。 そこで、計算機で作り出される乱数を疑似乱数(PRNG)と呼び区別することがある。 ここでは、特にことわらない限り乱数とは疑似乱数のことを指すとする。 計算機でソフト的に乱数を発生させることの最大のメリットは、 再現性があることである。 初期状態が同じであれば、発生する乱数も全く同じものが得られる。 このことは

    kaito834
    kaito834 2009/11/11
    「rand( ) その1、rand( ) その2、drand48( ) は線形合同法で乱数を発生させている。この方法に共通する欠点は、ある乱数が得られたら、次に現れる乱数が限られてしまうことだ。」
  • 1