我有一个“东西”(细节不重要)输出一个介于 0 和 + 无穷大之间的数字。该数字是对某些输入因素的度量,其中高数字不好,低数字好。
我需要为此添加一个敏感度设置 - 因此调用者可以指定一个基本上可以缩放输出的数字。
理想情况下,我希望该比例介于 -1 和 1 之间。0 代表正常。随着刻度向 1 增加,灵敏度增加,输出数量减少。随着标度向 -1 减小,灵敏度降低,输出数量增加。
到目前为止,我有这个:
static decimal GC(decimal inVal, decimal gc)
{
decimal nOUT = inVal;
if( gc > 0 )
{
nOUT = Math.Max( inVal * (1 - gc), 0 );
}
else if( gc < 0 )
{
if( gc == 1 ) gc = 0.9M;
decimal d = Math.Abs(gc);
nOUT = inVal * ( (1 / d) );
}
return nOUT;
}
GC 是我的比例函数并且gc
是输入因素。
这适用于 1,输出为
IN = 3.0, OUT = 3.0, gc = 0
IN = 3.0, OUT = 2.7, gc = 0.1
IN = 3.0, OUT = 2.4, gc = 0.2
IN = 3.0, OUT = 2.1, gc = 0.3
IN = 3.0, OUT = 1.8, gc = 0.4
IN = 3.0, OUT = 1.5, gc = 0.5
IN = 3.0, OUT = 1.2, gc = 0.6
IN = 3.0, OUT = 0.9, gc = 0.7
IN = 3.0, OUT = 0.6, gc = 0.8
IN = 3.0, OUT = 0.3, gc = 0.9
IN = 3.0, OUT = 0.0, gc = 1.0
但不适合在没有输出的情况下朝向 -1
IN = 3.0, OUT = 3.0, gca = 0
IN = 3.0, OUT = 30.0, gca = -0.1
IN = 3.0, OUT = 15.0, gca = -0.2
IN = 3.0, OUT = 10.0, gca = -0.3
IN = 3.0, OUT = 7.5, gca = -0.4
IN = 3.0, OUT = 6.0, gca = -0.5
IN = 3.0, OUT = 5.0, gca = -0.6
IN = 3.0, OUT = 4.3, gca = -0.7
IN = 3.0, OUT = 3.8, gca = -0.8
IN = 3.0, OUT = 3.3, gca = -0.9
IN = 3.0, OUT = 3.0, gca = -1.0
随着 gca 接近 -1,我需要输出数字变大。
我遇到的第二个问题是规模问题。最多,这个数字会大 10 倍。我想我需要引入另一个数字,比如比例,其中 gca 表示应用 +/- 到输出数字的比例比例,但我不知道如何。
任何人都可以帮忙吗?要么解决这个问题,要么用更好的方法!谢谢