アカウント名:
パスワード:
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
UNIXはシンプルである。必要なのはそのシンプルさを理解する素質だけである -- Dennis Ritchie
擬似乱数 (スコア:4, 興味深い)
線形合同法みたいな擬似乱数の最下位ビットは0と1を繰り返したりする性質
があるから、そのままサイコロの目に合わそうとして6で割ったあまりを求め
たりすると奇数と偶数を繰り返してしまうんだよね(奇数か偶数かは最下位ビット
が決めるので)。
Re:擬似乱数 (スコア:4, 興味深い)
こんな感じのコードになっていて少し見直した覚えがあります。
int rand()
{
static unsigned long _hold; <-どこかで初期化してる
return ((_hold = _hold * 214013L + 2531011L) >> 16) & 0x7fff;
}
つまり、rand()の戻り値の範囲は[0,2^15)ですが、内部ではunsigned long変数を
使っているので周期は32768でなく、もっと長く(最良の場合2^32)になっていて、
しかも戻り値は上位ビットを使っているので元記事にあるような規則性を生み出す確率が
非常に小さいものになっています。C標準のrand()は悪いといろんなところで言われている
(Numerical Recipes in Cとか)ようですが、それほど悪くもないんじゃないかな、と。
どうやら、記事になった乱数発生のバグは、C標準のrand()を使うだけで避けられるんでは?
Re:擬似乱数 (スコア:0)
Re:擬似乱数 (スコア:0)
Re:擬似乱数 (スコア:2, 興味深い)
それでもお偉いさんには理解できないんですよね。
Re:擬似乱数 (スコア:1, すばらしい洞察)
Re:擬似乱数 (スコア:2, すばらしい洞察)
Re:擬似乱数 (スコア:1)
the.ACount
Re:擬似乱数 (スコア:0)
むしろ「氷山の一角」というべきかと。
現場で起こってるトラブルは、こんなもんじゃありません。