これはいかがですか? PHPを手に入れることはできませんが、私はPythonを使用しましたが、わかりました。そうでない場合は質問してください。
ℓを最初に入力する必要がある値の数とし、nを切り捨てたい数値にします。次に、最大の指数xがnxとなるような指数を見つけることです。 (N - - 1)Xから1、ℓ - (N - 2)X我々は
ℓに最も近い整数である索引を持つアイテムを選択することができから1、...、ℓ - 1 Xから1、ℓ - 0 Xから1
であり、これはリストの最後に向かって偏りがあります。
import math
def select_with_bias(s, n):
"""Select n values from the list s if possible, with bias to later values."""
l = len(s)
if l <= n:
return s[:] # List is short: return copy of whole list.
if n < 2:
return s[-n:] # If n is 1, last item only; if n is 0, empty list.
x = math.log(l - 1, n) # Shorthand for log(l - 1)/log(n)
result = []
for i in xrange(n - 1, -1, -1): # Loop from n-1 down to 0.
result.append(s[l - int(i ** x) - 1])
return result
(Pythonの専門家のために:。これはPythonでそれを行うための最も慣用的な方法ではありませんが、私は、私は、Pythonを知らないプログラマをすることができるとして、それはのように明確にしたかった)
たとえば
:
>>> select_with_bias(range(100), 10)
[19, 36, 51, 64, 75, 84, 91, 96, 98, 99]
>>> select_with_bias(range(100), 20)
[8, 15, 22, 29, 36, 42, 48, 54, 60, 65, 70, 75, 80, 84, 88, 91, 94, 97, 98, 99]
それは、このアプローチのバリエーションを試してみるのは簡単です:アイデアは、右の形状の曲線を選択し、リストの長さに合わせて、それを拡張することですので、あなたは異なる試してみることができます曲線。私は多項式曲線を選択しましたが、それがうまくいかない場合は、別のもの、例えば指数関数を選択することができます。
URLの2000文字の長さはGETメソッドによるものですか?それから、代わりにPOSTを使用するように変換してください。 – ajreal
@ajreal - 良いアイデアですが、技術的な理由から私は使用できません。 – manixrock