あいまいなタイトルのお詫び。私の問題は次のとおりです。w
の項目が1つ未満のベクトルを与えられた場合、2つめのベクトルdoubleのv
は、合計が1未満(以下の再帰で計算されます)の正の値を持ち、u
は正で、一sum(v)>1-u
まで再帰浮動小数点計算
w(i) = RandomNumber(); //A random number from (0,1) - not necessarily uniform
v(i) = v(i-1)*w(i)*(1-w(i-1))/w(i-1);
を用いv
を拡張します。問題はu
が非常に小さくなる可能性があり、が(確率的に)減少しているので、それも小さくなることがあります。そして、w(i)
も同様に近づくかもしれません。
これを実装する最も安全な方法は何ですか?精度のポイント:)
はい、おそらく、これは小さいuのためのOK近似を与えるでしょう(精度が良いということは> 0ですか)。私はもう少し考えなければならないだろう。 – MMM
連続する2つの浮動小数点値の間の距離(floatまたはdoubleのいずれか)は値によって異なります。 0に近づくほど、この距離は小さくなります(これは内部表現によるものです)。役に立つかもしれないブログ投稿のリストについては、http://randomascii.wordpress.com/category/floating-point/を参照してください。 – Asaf
あなたは初めてあなたを誤解しました - 最終的な合計が1-uであることを暗示していると思っていましたが、これは明らかに正しくはありませんが、今あなたが意味するものを見ています。ありがとう – MMM