1

考虑 0 到 1 之间值的数组随机数组,例如:

[0.1,0.2,0.8,0.9]

有没有办法计算应该向下舍入或向上舍入到整数的点,以匹配最接近的未舍入数组的平均值?(在上述情况下,这将是平均值,但这纯粹是巧合)

还是只是反复试验?我在python中编码

谢谢你的帮助

4

1 回答 1

1

将它们相加,然后将总和四舍五入。这就是你想要多少个 1。回合所以你得到那么多1。

def rounding_point(l):
    # if the input is sorted, you don't need the following line
    l = sorted(l)
    ones_needed = int(round(sum(l)))
    # this may require adjustment if there are duplicates in the input
    return 1.0 if ones_needed == len(l) else l[-ones_needed]

如果对列表进行排序变得过于昂贵,您可以使用快速选择之类的选择算法。但是,Python 没有内置快速选择功能,因此除非您的输入足够大,以至于快速选择的渐近优势超过了高度优化的 C 排序算法的常数因子优势,否则请不要打扰。

于 2013-07-16T14:46:54.087 回答