我有一组n
,数字{N_1, N_2.....N_n}
基本上我想对所有 N_k
的总和做一些事情,使总和的结果归一化/限制在 (0,1)
之间((比如除以一些 f(N_1,N_2..N_n))
但我不想比较集合中的所有整数来找到最大值,我想保持答案“无量纲”所以 f例如,
不能是 (N_k)^2
的总和。
是否有一个简单的函数 f
或其他方法来确保这一点?
编辑
我想要从 (0,infinity)
到 (0,1)
f = sum
将不起作用,因为它总是给出 1 的结果,因此与总和不成比例。
假设每一项都是以米为单位的长度……无量纲意味着操作的最终结果不应该有任何单位……例如 2m + 3m/(2m + 1m) =5/3 没有单位。
但是......有相当明显的答案可能有效,例如f = sum +1 或 f= sum +2
等。它们将随着总和增长,并且对于大的总和值趋于 1
那么问题可能更主观,变成了可以使用哪种其他类型的 f 以及哪种将为大值提供“最线性”类型的映射?
最佳答案
atan(x/k)/(pi/2) 将所有 [0..infinity] 映射到范围 0..1:fooplot
选择一个至少是您期望看到的最大数字一半大的数字 k。输入 k 映射到 0.5。太大的输入将彼此非常接近并且 1 以致于在舍入中丢失。
关于algorithm - 有没有办法在不找到集合中的最大整数的情况下将集合中的整数之和约束为(0,1)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5761091/