我有一个没有等式的无休止的系列,并且是随机的,类似这样,
X = 1, 456, 555, 556, 557, 789 ...
请注意,我将此列表作为一个流,我不知道将来的值,我不知道X
的最小值和最大值。
如何查找任何N(X)
的倒置正常x in X
,以便
N(x) --> 0
,请 x --> inf
如果N(x) --> 1
x --> 0
请注意,x
越接近0
,x
越小,1
越近。{ / p>
我怎样才能实现这样的转变?
我尝试了以下内容:
#python
def invnorm(x):
denom = 1 + math.exp(-x)
return 2 - (2/denom)
invnorm(200)
Out[8]: 0.0
invnorm(20)
Out[9]: 4.1223073843355e-09
invnorm(2)
Out[10]: 0.23840584404423537
invnorm(1)
Out[11]: 0.5378828427399902
由于我的范围很大,而且200
本身会给0
而我的范围会偏向0
,所以不会给出令人满意的结果。
答案 0 :(得分:8)
好的,所以你基本上是在寻找一个连续的单调函数 N :[0,∞)→(0,1)这样:
在这种情况下,“明显的”选择是N(x) = 1 / (x + 1),或者在Python中:
def invnorm (x):
return 1.0 / (x + 1)
当然,还有无数许多其他函数满足这些条件,例如 N ( x )= 1 /( x + 1) a 任何正实数 a 。
另一个“自然”选择是N(x) = e−x,或者在Python中:
def invnorm (x):
return math.exp(-x)
这也可以重新调整为 N ( x )= b - x 任何实数 b > 1仍然满足您的要求。
当然,如果我们放松单调性要求(我刚才假设,即使你没有明确说明),即使是像Abhishek Bansal N(x) = sin(x) / x这样的怪异函数也符合条件。
答案 1 :(得分:0)
1 - X / M
,其中M
是预期的最大值(整数4294967295.
可能为X
)。