algorithm - 有没有办法在不找到集合中的最大整数的情况下将集合中的整数之和约束为(0,1)?

标签 algorithm data-structures discrete-mathematics

我有一组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/

相关文章:

python - 生成 k 大多数子集唯一的元素对

algorithm - 和差最大化

ruby - 高效的置换树算法

c++ - 为什么我可以使用 for 循环而不是单独访问 C++ map 元素?

c# - 用于确定特定范围内有多少元素的数据结构?

algorithm - 停下来想想《算法设计手册》第 2 版中的 : Hip to the Squares?

c++ - *max_element() 在此代码段中如何工作?

image - 我需要一些失真处理算法

C 数据结构理论与技术 - 同栈中的整数和字符

python - Combinatorics Counting Puzzle : Roll 20, 8面骰子,得到至少5个相同值的骰子的概率是多少