如何将0到一个不确定的大数之间的数字进行非线性映射,使其在0到1之间变化?

5
我希望将介于0和m之间的数字映射为介于0和1之间的数字,但是m是不确定且大约很大的数字。我该如何将这些数字非线性地映射到介于0和1之间而又与不确定的大数字有关?我使用了arctan函数,但效果并不好且不均匀。

你能举个例子说明你想要的结果是什么吗?你是一次映射一个数字还是一组数字? - davids
1
是否有单调性、连续性等要求?如果没有,那么 sincos1.0 / (x + 1)x / (x + k)(x mod n) / n 等函数都将映射 [0, m] -> [0, 1]。如果您能提供更详细的规格说明,可能会有所帮助... - twalberg
1
离题了,这是数学而不是编程。 - High Performance Mark
1个回答

3

如果你想要一个非线性函数,将任意正实数域映射到实数域 [0,1],那么你理论上可以使用:

f(x) = x / (x + 1)

这个函数在所有点[0,正无穷)上连续。

然而,您必须意识到浮点数在位数上是有限的。在某些情况下,会发生碰撞,具体取决于实现方式。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接