假设您有一组理想比率,其总和 = 1。例如,
set = [0.2, 0.1, 0.4, 0.3]
但假设有一条规则规定,如果某个值不等于 0,则这些值都不应低于该值:
min = 0.25
直觉上我们可以说一个合适的是:
set = [0.25, 0, 0.425, 0.325]
但我真的不知道我在那里做了什么。
这种问题有名字吗?什么是通用解决方案?
最佳答案
让这个最小值为m
,一个通用的解决方案可能是:
while there is a none zero value smaller then `m`:
x <- lowest value
for each y != x:
y += y*x/ (1-x)
x <- 0
很容易看出上面的循环在每次迭代中都保留了sum==1,因为:
除 x = 1-x 之外的所有元素的总和
因此,所有增加的总和是
x/(1-x) * [sum of all elements excluding x] = x / (1-x) * (1-x) = x
因此,在每次迭代中,总和减少和增加相同的值,因此总和保持为 1。
关于algorithm - 当您有一组理想的比率,但其中一些比率低于最小值时,如何找到最合适的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18110833/