トップページ > プログラム > 2016年10月08日 > KfBpvv2w

書き込み順位&時間帯一覧

16 位/206 ID中時間01234567891011121314151617181920212223Total
書き込み数0000001000000000001000103



使用した名前一覧書き込んだスレッド一覧
デフォルトの名無しさん
疑似乱数2
Perlについての質問箱 63箱目

書き込みレス一覧

疑似乱数2
498 :デフォルトの名無しさん[sage]:2016/10/08(土) 06:01:51.17 ID:KfBpvv2w
順番性のテストをしたことあるけど、
xorshiftは異常なほど結果が偏ってるよ。
逆に線形合同法は異常なほど分散する。

結局、統計学や確率論などの乱数の順番が重要になる処理では結局どちらも使えない。
例えば、rand(100)で 5回連続で 20以下が出るかどうか。などの処理確率の信憑性が極めて疑わしい。


ちなみにテストはいろいろやったけど、xorshiftのおかしさが一撃でわかるのが x座標y座標と順番に出して印をつけてく方式。
線形合同法に至っては、rand(100) を100個出すだけで十分。確率上あり得ないくらい重複が少なく綺麗に分散する。


線形合同法は、下位ビットのかたよりがすぐ話題になるが、1/max の精度で乱数を必要とすることがあまりないのでけっこうどうでもいい。


ちなみに俺はここ数年、線形合同法で最初のseed設定時に乱数を1024個プールして、
array[rand(max) % 1024];
みたいな感じでランダムで取り出して使う。(そしてそこに次の乱数をセットする)。
って感じの自作汎用dllを使ってる。
トランプだって、2度シャッフルすればもう最初の並び順との因果関係は誰にも発見出来ないってね。


まぁメモリは多少食うし速度も最速じゃないけど、別に最速最小を求めるような研究者じゃないし。俺は。
疑似乱数2
502 :デフォルトの名無しさん[sage]:2016/10/08(土) 18:34:54.73 ID:KfBpvv2w
あんま深く考えてなかったけどそうかもね。
ただし検定は通ってるから、まあいいっちゃいいけど。

実用上の実質的な周期はそのまま線形合同法と同じだよ。
まあ300回くらいなら多く回しても実用上にも問題ないけど、そんなのは計算しない。

>rand(max) % 1024
これは素数にすることでノーコストで解決できるから気が向いた時にでもやっとくよ。
ただ、どんなに下位ビットが偏ってた所で、
araay[988]の中身 と araay[986]の中身の因果関係、もしくは共通点は何か、と聞かれても判明させるのは不可能に近いと思うけどね。

>上位もマスクして切り捨てて使うのが常識
ただ線形合同法はそれでいいとしてxorshiftは捨てるべきビットが特定できないような?


まあ俺はシャッフルして何も捨てないのが好きらしい。
全部が若干遅いんだけどね。特にseed植える時。
Perlについての質問箱 63箱目
463 :デフォルトの名無しさん[sage]:2016/10/08(土) 22:30:15.59 ID:KfBpvv2w
はぁ?
~0 この時点で同じになりませんがな


※このページは、『2ちゃんねる』の書き込みを基に自動生成したものです。オリジナルはリンク先の2ちゃんねるの書き込みです。
※このサイトでオリジナルの書き込みについては対応できません。
※何か問題のある場合はメールをしてください。対応します。