Python 反馈循环以获得中位数范围内的特定数量的点
Python feedback loop in order to obtain a specific amount of points in a range about a median
我有一个 x
数值列表。
首先,我指定一个范围。我想从 x
中获取此范围内的值。值的范围是 x
的中位数的 ±R
。我想调整 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)
天真地,我会尝试一种 Bolzano theorem 方法。你得到中位数,然后是离中位数最远的值,并将它们之间的距离称为 L0。当然,这将包括所有要点。然后将 L0 除以 2 并检查间隔内有多少点。还是太多还是太少?
- 如果太多,L0=L 且 L = L0/2。
- 如果太少,L=(L0+L)/2。
因此,您将以递归方式将括号放入解决方案中。
我有一个 x
数值列表。
首先,我指定一个范围。我想从 x
中获取此范围内的值。值的范围是 x
的中位数的 ±R
。我想调整 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)
天真地,我会尝试一种 Bolzano theorem 方法。你得到中位数,然后是离中位数最远的值,并将它们之间的距离称为 L0。当然,这将包括所有要点。然后将 L0 除以 2 并检查间隔内有多少点。还是太多还是太少?
- 如果太多,L0=L 且 L = L0/2。
- 如果太少,L=(L0+L)/2。
因此,您将以递归方式将括号放入解决方案中。