float limit_sample_space(float minu, float maxu, float u)
float limit_sample_space(float maxu, float u)
minu
希望の最小u
値。minu
は0から1の範囲に制限されます。
指定しなかった場合は、minu
は0です。
maxu
希望の最大u
値。maxu
は0から1の範囲に制限されます。
u
0から1の範囲の数値。
u
が[minu,maxu]
の範囲外の時、[0,1)
(つまり、0以上1未満)範囲で均等にランダムなu
が[minu,maxu]
範囲内で均等にランダムなサンプルを生成できるように
u
を空間内で周回させて返します。
これは、範囲の境界にサンプルが余計に発生してしまうのを回避します。
また、範囲内のサンプルが、その範囲の変更によって変わらないようにします。
つまり、u
が既に範囲内にあれば、返される値もそのままu
です。
しかし、これはフィットやクランプよりも遅いので、均等性と整合性の両方が必要が時にのみ使用してください。
例えば、異常値でないサンプルに影響を与えずに、確率分布での異常値を回避するのに役立ちます。
また、u
に対して単調増加しなくなります。
フィットは、異常値も回避するのには十分ですが、異常値でないサンプルに若干影響を与えてしまいます。
確率分布のminvalue
とmaxvalue
を指定したminu
とmaxu
を見つけるには、
minu = CDF(minvalue)
とmaxu = CDF(maxvalue)
を使います。CDF
は確率分布の累積分布関数(逆関数ではない)です。
minvalue
やmaxvalue
を受け取るsample_exponential, sample_cauchy, sample_normal, sample_lognormal, sample_lognormal_by_medianは、この制限の代わりにフィットを使用します。
その理由は、単調性を維持しても、この関数は範囲内のサンプルの整合性を良くするためにサンプリング前にu
へ適用することができるからです。
See also |