アカウント名:
パスワード:
13.16: ある範囲の整数からなる乱数はどうやったら生成することができるか。 A: すぐに思い付く、 rand() % N (これは0からN-1までの数を返そうとする)は乱数の質が低い。なぜなら乱数発生器の多くで下位のビットは悲惨なほどランダムでない(質 問13.18を参照のこと)。よりよい方法は以下のようなものである。 (int)((double)rand() / ((double)RAND_MAX + 1) * N) 浮動小数を使うことが気になるのなら、以下の方法を試せばよい。 rand() / (RAND_MAX / N + 1)
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
UNIXはただ死んだだけでなく、本当にひどい臭いを放ち始めている -- あるソフトウェアエンジニア
理解できん (スコア:0)
何でこんなことになったの?
Re:理解できん (スコア:1)
rand() % N
とすると法則性がでてしまうので、
(rand() / M) % N
/* M は適当に大きな数字 */
とかを使った方がより乱数性がよくなるとか。
Re:理解できん (スコア:4, 参考になる)
Re:理解できん (スコア:0)