考虑 0 到 1 之间值的数组随机数组,例如:
[0.1,0.2,0.8,0.9]
有没有办法计算应该向下舍入或向上舍入到整数的点,以匹配最接近的未舍入数组的平均值?(在上述情况下,这将是平均值,但这纯粹是巧合)
还是只是反复试验?我在python中编码
谢谢你的帮助
将它们相加,然后将总和四舍五入。这就是你想要多少个 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 排序算法的常数因子优势,否则请不要打扰。