タグ

2014年6月7日のブックマーク (1件)

  • C++11 乱数 std::random 入門

    rand() の問題点 これまで広く使用されてきた rand() による乱数生成には以下の問題点がある。 生成される範囲が [0, 32767] と狭い rand() % N は一様では無い 周期があまり長くない 乱数生成アルゴリズムが固定(通常は線形合同法) 正規分布など、一様でない乱数生成が面倒 rand() で生成される値の範囲は [0, 32767] と狭い。15ビットしかない。 (rand() << 15) + rand() とすれば、30ビット乱数にすることは可能だが、スマートではないし、 生成アルゴリズムの関係で、乱数に偏りが出る場合がある。 通常、乱数として欲しいのは [0, N) 範囲の値であることが多い。この場合は rand() % N とすることが一般的だ。 しかし、このようにして生成した乱数は一様でなく偏りがある。特に N が大きい時にその現象が顕著になる。 例えば

    fa11enprince
    fa11enprince 2014/06/07
    この解説なら使い方がわかる(´;Д;`)