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 |