作者: HIDAKA Takahiro
日時: 2002/5/06(04:10)
 ひだかです。数学は苦手なので思い切り間違っているかも
しれません。

dune <FZH01112@...> wrote:

> 極悪です。長文かも。ネタです。悩んでなんかいません(笑)
> 
> 了条件が length $p < 8 になってるのは、こうしとけば有効桁8
> 桁のπが求まるんじゃないか、という朝知恵。

 length $p = 2 とかを考えると、有効桁数2桁のπを
求められてはいないですよね。。

> ん。乱数生成ルーチンをモジュールの Math::Random::MT (*2) で置
> き換えてみましたが、
> となって、これもどんぐりの背比べです(というか時間かかりす
> ぎ)。経験上、一晩ほっといてもこれ以上精度は出ないと思います。
> スピードはともかく、理屈は合ってるはずなのに なぜ精度が出な
> いのでしょうか。

 MT のいいのは、乱数の周期性が長いことだったように思うのです。

 モンテカルロ法で精度を出すためには、点の位置として
いかに異なる数値の組み合わせをたくさんだせるかが問題になると
思うのですが、普通の Perl の浮動小数点数でやる限りは、
表現できる座標値自体が、double の仮数部のビット数の限界が
ある以上有限なのではないでしょうか。

 そうすると、いくら繰り返しを多くしても、同じ点列からは
同じ結果しか生まれないような気がします。点列の周期が長いMTを
使ったとしても、結果として統計処理で平均をとるようなものなので
結果的に同じことになるような。


> (*1) だいたいこういう問題に乱数を使うのが間違ってる気がする。
> 乱数ってのは規則性が邪魔になる場合に使うものじゃないかな。
> 逆に言えば、規則的に打った点の位置を変調してから使えばモンテ
> カルロで乱数を使わなくても済むと思う。

 モンテカルロ法で8桁とかの有効精度を出そうとするのも
厳しいような気もします。収束としては極めて遅いアルゴリズムだと
思うので。

-- 
ひだかたかひろ  cv8t-hdk@...-net.or.jp