我有一个无等式的无休止序列,是随机的,类似这样的
X = 1, 456, 555, 556, 557, 789 ...
请注意,我将此列表作为流获取,我不知道将来的值,也不知道X
的最小值和最大值。你知道吗
如何找出任何x in X
的倒转法线N(X)
,这样
N(x) --> 0
如果x --> inf
N(x) --> 1
如果x --> 0
可以这样理解:x
越大,它应该越接近0
;x
越小,它应该越接近1
。你知道吗
我怎样才能实现这样的转变?你知道吗
我尝试了以下方法:
#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,∞)→(0,1],这样:
在这种情况下,“明显的”选择是N(x) = 1 / (x + 1),或者在Python中:
当然,也有无穷多的函数满足这些条件,比如对于任何正实数a,N(x)=1/(x+1)a。你知道吗
另一个“自然”的选择是N(x) = e−x,或者在Python中:
对于任何实数b>;1,它也可以重新缩放为N(x)=b-x,同时仍然满足您的要求。你知道吗
当然,如果我们放宽了单调性要求(我只是假设,尽管你没有明确说明),甚至像abhishekbansal的N(x) = sin(x) / x这样的更奇怪的函数也可以。你知道吗
1 - X / M
,其中M
是期望的最大值(对于整数X
,可以是4294967295.
)。你知道吗相关问题 更多 >
编程相关推荐