0

我有一个x数值列表。

首先,我指定一个范围。我想从x这个范围内的那个值中获取值。值的范围将是±R的中位数x。我想调整R以获得特定数量的值N。我能看到实现这一目标的唯一方法是通过某种反馈循环。什么是N尽可能接近的快速有效的方法?

例如。

x = ['3','5','1','2','4'] 我想要中位数的值3-R<3<3+R范围3。比方说N = 3['2','3','4']获得的值将R作为 1 工作。

示例代码:

N = 3
x = ['3','5','1','2','4']
R = 1
n = some number to allow room for error
y = values of x in range ±R from median
while len(y) > N+n or len(y) < N-n:
    if len(y) > N+n:
        R -= ADJUST VALUE PROPORTIONAL TO ERROR HERE?
    if len(y) < N-n:
        R += ADJUST VALUE PROPORTIONAL TO ERROR HERE?
    y = values of x in range ±R from median (update y list with new R)
4

1 回答 1

1

天真地,我会尝试一种博尔扎诺定理方法。你得到中位数,然后是离中位数最远的值,并将它们之间的距离称为 L0。当然,这将包括所有要点。然后你将 L0 除以 2 并检查有多少点位于区间内。还是太多还是太少?

  • 如果太多,L0=L,L=L0/2。
  • 如果太少,L=(L0+L)/2。

因此,您将递归地加入解决方案。

于 2015-07-09T16:18:37.640 回答